Documentation

Index

Constants

This section is empty.

Variables

View Source
var TemplateFuncs = template.FuncMap{
	"clean_ami_name": templateCleanAMIName,
}

Functions

func DecodeAuthZMessages

func DecodeAuthZMessages(sess *session.Session)

    DecodeAuthZMessages enables automatic decoding of any encoded authorization messages

    func SSHHost

    func SSHHost(e ec2Describer, sshInterface string) func(multistep.StateBag) (string, error)

      SSHHost returns a function that can be given to the SSH communicator for determining the SSH address based on the instance DNS name.

      func WaitForImageToBeImported

      func WaitForImageToBeImported(c *ec2.EC2, ctx aws.Context, input *ec2.DescribeImportImageTasksInput, opts ...request.WaiterOption) error

      func WaitForVolumeToBeAttached

      func WaitForVolumeToBeAttached(c *ec2.EC2, ctx aws.Context, input *ec2.DescribeVolumesInput, opts ...request.WaiterOption) error

      func WaitForVolumeToBeDetached

      func WaitForVolumeToBeDetached(c *ec2.EC2, ctx aws.Context, input *ec2.DescribeVolumesInput, opts ...request.WaiterOption) error

      func WaitUntilAMIAvailable

      func WaitUntilAMIAvailable(ctx aws.Context, conn *ec2.EC2, imageId string) error

      func WaitUntilImageImported

      func WaitUntilImageImported(ctx aws.Context, conn *ec2.EC2, taskID string) error

      func WaitUntilInstanceTerminated

      func WaitUntilInstanceTerminated(ctx aws.Context, conn *ec2.EC2, instanceId string) error

      func WaitUntilSnapshotDone

      func WaitUntilSnapshotDone(ctx aws.Context, conn *ec2.EC2, snapshotID string) error

      func WaitUntilSpotRequestFulfilled

      func WaitUntilSpotRequestFulfilled(ctx aws.Context, conn *ec2.EC2, spotRequestId string) error

        This function works for both requesting and cancelling spot instances.

        func WaitUntilVolumeAttached

        func WaitUntilVolumeAttached(ctx aws.Context, conn *ec2.EC2, volumeId string) error

        func WaitUntilVolumeAvailable

        func WaitUntilVolumeAvailable(ctx aws.Context, conn *ec2.EC2, volumeId string) error

        func WaitUntilVolumeDetached

        func WaitUntilVolumeDetached(ctx aws.Context, conn *ec2.EC2, volumeId string) error

        Types

        type AMIBlockDevices

        type AMIBlockDevices struct {
        	AMIMappings []BlockDevice `mapstructure:"ami_block_device_mappings"`
        }

        func (*AMIBlockDevices) BuildAMIDevices

        func (b *AMIBlockDevices) BuildAMIDevices() []*ec2.BlockDeviceMapping

        type AMIConfig

        type AMIConfig struct {
        	AMIName                 string            `mapstructure:"ami_name"`
        	AMIDescription          string            `mapstructure:"ami_description"`
        	AMIVirtType             string            `mapstructure:"ami_virtualization_type"`
        	AMIUsers                []string          `mapstructure:"ami_users"`
        	AMIGroups               []string          `mapstructure:"ami_groups"`
        	AMIProductCodes         []string          `mapstructure:"ami_product_codes"`
        	AMIRegions              []string          `mapstructure:"ami_regions"`
        	AMISkipRegionValidation bool              `mapstructure:"skip_region_validation"`
        	AMITags                 TagMap            `mapstructure:"tags"`
        	AMIENASupport           *bool             `mapstructure:"ena_support"`
        	AMISriovNetSupport      bool              `mapstructure:"sriov_support"`
        	AMIForceDeregister      bool              `mapstructure:"force_deregister"`
        	AMIForceDeleteSnapshot  bool              `mapstructure:"force_delete_snapshot"`
        	AMIEncryptBootVolume    bool              `mapstructure:"encrypt_boot"`
        	AMIKmsKeyId             string            `mapstructure:"kms_key_id"`
        	AMIRegionKMSKeyIDs      map[string]string `mapstructure:"region_kms_key_ids"`
        	SnapshotTags            TagMap            `mapstructure:"snapshot_tags"`
        	SnapshotUsers           []string          `mapstructure:"snapshot_users"`
        	SnapshotGroups          []string          `mapstructure:"snapshot_groups"`
        }

          AMIConfig is for common configuration related to creating AMIs.

          func (*AMIConfig) Prepare

          func (c *AMIConfig) Prepare(accessConfig *AccessConfig, ctx *interpolate.Context) []error

          type AccessConfig

          type AccessConfig struct {
          	AccessKey            string `mapstructure:"access_key"`
          	CustomEndpointEc2    string `mapstructure:"custom_endpoint_ec2"`
          	DecodeAuthZMessages  bool   `mapstructure:"decode_authorization_messages"`
          	MFACode              string `mapstructure:"mfa_code"`
          	ProfileName          string `mapstructure:"profile"`
          	RawRegion            string `mapstructure:"region"`
          	SecretKey            string `mapstructure:"secret_key"`
          	SkipValidation       bool   `mapstructure:"skip_region_validation"`
          	SkipMetadataApiCheck bool   `mapstructure:"skip_metadata_api_check"`
          	Token                string `mapstructure:"token"`
          	// contains filtered or unexported fields
          }

            AccessConfig is for common configuration related to AWS access

            func (*AccessConfig) IsChinaCloud

            func (c *AccessConfig) IsChinaCloud() bool

            func (*AccessConfig) IsGovCloud

            func (c *AccessConfig) IsGovCloud() bool

            func (*AccessConfig) NewEC2Connection

            func (c *AccessConfig) NewEC2Connection() (ec2iface.EC2API, error)

            func (*AccessConfig) Prepare

            func (c *AccessConfig) Prepare(ctx *interpolate.Context) []error

            func (*AccessConfig) Session

            func (c *AccessConfig) Session() (*session.Session, error)

              Config returns a valid aws.Config object for access to AWS services, or an error if the authentication and region couldn't be resolved

              func (*AccessConfig) SessionRegion

              func (c *AccessConfig) SessionRegion() string

              func (*AccessConfig) ValidateRegion

              func (c *AccessConfig) ValidateRegion(regions ...string) error

                ValidateRegion returns true if the supplied region is a valid AWS region and false if it's not.

                type AmiFilterOptions

                type AmiFilterOptions struct {
                	Filters    map[*string]*string
                	Owners     []*string
                	MostRecent bool `mapstructure:"most_recent"`
                }

                func (*AmiFilterOptions) Empty

                func (d *AmiFilterOptions) Empty() bool

                func (*AmiFilterOptions) NoOwner

                func (d *AmiFilterOptions) NoOwner() bool

                type Artifact

                type Artifact struct {
                	// A map of regions to AMI IDs.
                	Amis map[string]string
                
                	// BuilderId is the unique ID for the builder that created this AMI
                	BuilderIdValue string
                
                	// EC2 connection for performing API stuff.
                	Session *session.Session
                }

                  Artifact is an artifact implementation that contains built AMIs.

                  func (*Artifact) BuilderId

                  func (a *Artifact) BuilderId() string

                  func (*Artifact) Destroy

                  func (a *Artifact) Destroy() error

                  func (*Artifact) Files

                  func (*Artifact) Files() []string

                  func (*Artifact) Id

                  func (a *Artifact) Id() string

                  func (*Artifact) State

                  func (a *Artifact) State(name string) interface{}

                  func (*Artifact) String

                  func (a *Artifact) String() string

                  type BlockDevice

                  type BlockDevice struct {
                  	DeleteOnTermination bool   `mapstructure:"delete_on_termination"`
                  	DeviceName          string `mapstructure:"device_name"`
                  	Encrypted           bool   `mapstructure:"encrypted"`
                  	IOPS                int64  `mapstructure:"iops"`
                  	NoDevice            bool   `mapstructure:"no_device"`
                  	SnapshotId          string `mapstructure:"snapshot_id"`
                  	VirtualName         string `mapstructure:"virtual_name"`
                  	VolumeType          string `mapstructure:"volume_type"`
                  	VolumeSize          int64  `mapstructure:"volume_size"`
                  	KmsKeyId            string `mapstructure:"kms_key_id"`
                  }

                    BlockDevice

                    func (*BlockDevice) Prepare

                    func (b *BlockDevice) Prepare(ctx *interpolate.Context) error

                    type BlockDevices

                    type BlockDevices struct {
                    	AMIBlockDevices    `mapstructure:",squash"`
                    	LaunchBlockDevices `mapstructure:",squash"`
                    }

                    func (*BlockDevices) Prepare

                    func (b *BlockDevices) Prepare(ctx *interpolate.Context) (errs []error)

                    type BuildInfoTemplate

                    type BuildInfoTemplate struct {
                    	BuildRegion   string
                    	SourceAMI     string
                    	SourceAMIName string
                    	SourceAMITags map[string]string
                    }

                    type EC2Tags

                    type EC2Tags []*ec2.Tag

                    func (EC2Tags) Report

                    func (t EC2Tags) Report(ui packer.Ui)

                    type LaunchBlockDevices

                    type LaunchBlockDevices struct {
                    	LaunchMappings []BlockDevice `mapstructure:"launch_block_device_mappings"`
                    }

                    func (*LaunchBlockDevices) BuildLaunchDevices

                    func (b *LaunchBlockDevices) BuildLaunchDevices() []*ec2.BlockDeviceMapping

                    type RunConfig

                    type RunConfig struct {
                    	AssociatePublicIpAddress          bool                       `mapstructure:"associate_public_ip_address"`
                    	AvailabilityZone                  string                     `mapstructure:"availability_zone"`
                    	BlockDurationMinutes              int64                      `mapstructure:"block_duration_minutes"`
                    	DisableStopInstance               bool                       `mapstructure:"disable_stop_instance"`
                    	EbsOptimized                      bool                       `mapstructure:"ebs_optimized"`
                    	EnableT2Unlimited                 bool                       `mapstructure:"enable_t2_unlimited"`
                    	IamInstanceProfile                string                     `mapstructure:"iam_instance_profile"`
                    	InstanceInitiatedShutdownBehavior string                     `mapstructure:"shutdown_behavior"`
                    	InstanceType                      string                     `mapstructure:"instance_type"`
                    	SecurityGroupFilter               SecurityGroupFilterOptions `mapstructure:"security_group_filter"`
                    	RunTags                           map[string]string          `mapstructure:"run_tags"`
                    	SecurityGroupId                   string                     `mapstructure:"security_group_id"`
                    	SecurityGroupIds                  []string                   `mapstructure:"security_group_ids"`
                    	SourceAmi                         string                     `mapstructure:"source_ami"`
                    	SourceAmiFilter                   AmiFilterOptions           `mapstructure:"source_ami_filter"`
                    	SpotPrice                         string                     `mapstructure:"spot_price"`
                    	SpotPriceAutoProduct              string                     `mapstructure:"spot_price_auto_product"`
                    	SpotTags                          map[string]string          `mapstructure:"spot_tags"`
                    	SubnetFilter                      SubnetFilterOptions        `mapstructure:"subnet_filter"`
                    	SubnetId                          string                     `mapstructure:"subnet_id"`
                    	TemporaryKeyPairName              string                     `mapstructure:"temporary_key_pair_name"`
                    	TemporarySGSourceCidr             string                     `mapstructure:"temporary_security_group_source_cidr"`
                    	UserData                          string                     `mapstructure:"user_data"`
                    	UserDataFile                      string                     `mapstructure:"user_data_file"`
                    	VpcFilter                         VpcFilterOptions           `mapstructure:"vpc_filter"`
                    	VpcId                             string                     `mapstructure:"vpc_id"`
                    	WindowsPasswordTimeout            time.Duration              `mapstructure:"windows_password_timeout"`
                    
                    	// Communicator settings
                    	Comm communicator.Config `mapstructure:",squash"`
                    }

                      RunConfig contains configuration for running an instance from a source AMI and details on how to access that launched image.

                      func (*RunConfig) IsSpotInstance

                      func (c *RunConfig) IsSpotInstance() bool

                      func (*RunConfig) Prepare

                      func (c *RunConfig) Prepare(ctx *interpolate.Context) []error

                      type SecurityGroupFilterOptions

                      type SecurityGroupFilterOptions struct {
                      	Filters map[*string]*string
                      }

                      func (*SecurityGroupFilterOptions) Empty

                      func (d *SecurityGroupFilterOptions) Empty() bool

                      type StateChangeConf

                      type StateChangeConf struct {
                      	Pending   []string
                      	Refresh   StateRefreshFunc
                      	StepState multistep.StateBag
                      	Target    string
                      }

                        StateChangeConf is the configuration struct used for `WaitForState`.

                        type StateRefreshFunc

                        type StateRefreshFunc func() (result interface{}, state string, err error)

                          StateRefreshFunc is a function type used for StateChangeConf that is responsible for refreshing the item being watched for a state change.

                          It returns three results. `result` is any object that will be returned as the final object after waiting for state change. This allows you to return the final updated object, for example an EC2 instance after refreshing it.

                          `state` is the latest state of that object. And `err` is any error that may have happened while refreshing the state.

                          type StepAMIRegionCopy

                          type StepAMIRegionCopy struct {
                          	AccessConfig      *AccessConfig
                          	Regions           []string
                          	RegionKeyIds      map[string]string
                          	EncryptBootVolume bool
                          	Name              string
                          }

                          func (*StepAMIRegionCopy) Cleanup

                          func (s *StepAMIRegionCopy) Cleanup(state multistep.StateBag)

                          func (*StepAMIRegionCopy) Run

                          type StepCleanupVolumes

                          type StepCleanupVolumes struct {
                          	BlockDevices BlockDevices
                          }

                            stepCleanupVolumes cleans up any orphaned volumes that were not designated to remain after termination of the instance. These volumes are typically ones that are marked as "delete on terminate:false" in the source_ami of a build.

                            func (*StepCleanupVolumes) Cleanup

                            func (s *StepCleanupVolumes) Cleanup(state multistep.StateBag)

                            func (*StepCleanupVolumes) Run

                            type StepCreateEncryptedAMICopy

                            type StepCreateEncryptedAMICopy struct {
                            	KeyID             string
                            	EncryptBootVolume bool
                            	Name              string
                            	AMIMappings       []BlockDevice
                            	// contains filtered or unexported fields
                            }

                            func (*StepCreateEncryptedAMICopy) Cleanup

                            func (s *StepCreateEncryptedAMICopy) Cleanup(state multistep.StateBag)

                            func (*StepCreateEncryptedAMICopy) Run

                            type StepCreateTags

                            type StepCreateTags struct {
                            	Tags         TagMap
                            	SnapshotTags TagMap
                            	Ctx          interpolate.Context
                            }

                            func (*StepCreateTags) Cleanup

                            func (s *StepCreateTags) Cleanup(state multistep.StateBag)

                            func (*StepCreateTags) Run

                            type StepDeregisterAMI

                            type StepDeregisterAMI struct {
                            	AccessConfig        *AccessConfig
                            	ForceDeregister     bool
                            	ForceDeleteSnapshot bool
                            	AMIName             string
                            	Regions             []string
                            }

                            func (*StepDeregisterAMI) Cleanup

                            func (s *StepDeregisterAMI) Cleanup(state multistep.StateBag)

                            func (*StepDeregisterAMI) Run

                            type StepGetPassword

                            type StepGetPassword struct {
                            	Debug     bool
                            	Comm      *communicator.Config
                            	Timeout   time.Duration
                            	BuildName string
                            }

                              StepGetPassword reads the password from a Windows server and sets it on the WinRM config.

                              func (*StepGetPassword) Cleanup

                              func (s *StepGetPassword) Cleanup(multistep.StateBag)

                              func (*StepGetPassword) Run

                              type StepKeyPair

                              type StepKeyPair struct {
                              	Debug        bool
                              	Comm         *communicator.Config
                              	DebugKeyPath string
                              	// contains filtered or unexported fields
                              }

                              func (*StepKeyPair) Cleanup

                              func (s *StepKeyPair) Cleanup(state multistep.StateBag)

                              func (*StepKeyPair) Run

                              type StepModifyAMIAttributes

                              type StepModifyAMIAttributes struct {
                              	Users          []string
                              	Groups         []string
                              	SnapshotUsers  []string
                              	SnapshotGroups []string
                              	ProductCodes   []string
                              	Description    string
                              	Ctx            interpolate.Context
                              }

                              func (*StepModifyAMIAttributes) Cleanup

                              func (s *StepModifyAMIAttributes) Cleanup(state multistep.StateBag)

                              func (*StepModifyAMIAttributes) Run

                              type StepModifyEBSBackedInstance

                              type StepModifyEBSBackedInstance struct {
                              	EnableAMIENASupport      *bool
                              	EnableAMISriovNetSupport bool
                              }

                              func (*StepModifyEBSBackedInstance) Cleanup

                              func (*StepModifyEBSBackedInstance) Run

                              type StepNetworkInfo

                              type StepNetworkInfo struct {
                              	VpcId               string
                              	VpcFilter           VpcFilterOptions
                              	SubnetId            string
                              	SubnetFilter        SubnetFilterOptions
                              	AvailabilityZone    string
                              	SecurityGroupIds    []string
                              	SecurityGroupFilter SecurityGroupFilterOptions
                              }

                                StepNetworkInfo queries AWS for information about VPC's and Subnets that is used throughout the AMI creation process.

                                Produces (adding them to the state bag):

                                vpc_id string - the VPC ID
                                subnet_id string - the Subnet ID
                                availability_zone string - the AZ name
                                

                                func (*StepNetworkInfo) Cleanup

                                func (s *StepNetworkInfo) Cleanup(multistep.StateBag)

                                func (*StepNetworkInfo) Run

                                type StepPreValidate

                                type StepPreValidate struct {
                                	DestAmiName     string
                                	ForceDeregister bool
                                }

                                  StepPreValidate provides an opportunity to pre-validate any configuration for the build before actually doing any time consuming work

                                  func (*StepPreValidate) Cleanup

                                  func (s *StepPreValidate) Cleanup(multistep.StateBag)

                                  func (*StepPreValidate) Run

                                  type StepRunSourceInstance

                                  type StepRunSourceInstance struct {
                                  	AssociatePublicIpAddress          bool
                                  	BlockDevices                      BlockDevices
                                  	Comm                              *communicator.Config
                                  	Ctx                               interpolate.Context
                                  	Debug                             bool
                                  	EbsOptimized                      bool
                                  	EnableT2Unlimited                 bool
                                  	ExpectedRootDevice                string
                                  	IamInstanceProfile                string
                                  	InstanceInitiatedShutdownBehavior string
                                  	InstanceType                      string
                                  	IsRestricted                      bool
                                  	SourceAMI                         string
                                  	Tags                              TagMap
                                  	UserData                          string
                                  	UserDataFile                      string
                                  	VolumeTags                        TagMap
                                  	// contains filtered or unexported fields
                                  }

                                  func (*StepRunSourceInstance) Cleanup

                                  func (s *StepRunSourceInstance) Cleanup(state multistep.StateBag)

                                  func (*StepRunSourceInstance) Run

                                  type StepRunSpotInstance

                                  type StepRunSpotInstance struct {
                                  	AssociatePublicIpAddress          bool
                                  	BlockDevices                      BlockDevices
                                  	BlockDurationMinutes              int64
                                  	Debug                             bool
                                  	Comm                              *communicator.Config
                                  	EbsOptimized                      bool
                                  	ExpectedRootDevice                string
                                  	IamInstanceProfile                string
                                  	InstanceInitiatedShutdownBehavior string
                                  	InstanceType                      string
                                  	SourceAMI                         string
                                  	SpotPrice                         string
                                  	SpotPriceProduct                  string
                                  	SpotTags                          TagMap
                                  	Tags                              TagMap
                                  	VolumeTags                        TagMap
                                  	UserData                          string
                                  	UserDataFile                      string
                                  	Ctx                               interpolate.Context
                                  	// contains filtered or unexported fields
                                  }

                                  func (*StepRunSpotInstance) Cleanup

                                  func (s *StepRunSpotInstance) Cleanup(state multistep.StateBag)

                                  func (*StepRunSpotInstance) Run

                                  type StepSecurityGroup

                                  type StepSecurityGroup struct {
                                  	CommConfig            *communicator.Config
                                  	SecurityGroupFilter   SecurityGroupFilterOptions
                                  	SecurityGroupIds      []string
                                  	TemporarySGSourceCidr string
                                  	// contains filtered or unexported fields
                                  }

                                  func (*StepSecurityGroup) Cleanup

                                  func (s *StepSecurityGroup) Cleanup(state multistep.StateBag)

                                  func (*StepSecurityGroup) Run

                                  type StepSourceAMIInfo

                                  type StepSourceAMIInfo struct {
                                  	SourceAmi                string
                                  	EnableAMISriovNetSupport bool
                                  	EnableAMIENASupport      *bool
                                  	AMIVirtType              string
                                  	AmiFilters               AmiFilterOptions
                                  }

                                    StepSourceAMIInfo extracts critical information from the source AMI that is used throughout the AMI creation process.

                                    Produces:

                                    source_image *ec2.Image - the source AMI info
                                    

                                    func (*StepSourceAMIInfo) Cleanup

                                    func (s *StepSourceAMIInfo) Cleanup(multistep.StateBag)

                                    func (*StepSourceAMIInfo) Run

                                    type StepStopEBSBackedInstance

                                    type StepStopEBSBackedInstance struct {
                                    	Skip                bool
                                    	DisableStopInstance bool
                                    }

                                    func (*StepStopEBSBackedInstance) Cleanup

                                    func (*StepStopEBSBackedInstance) Run

                                    type SubnetFilterOptions

                                    type SubnetFilterOptions struct {
                                    	Filters  map[*string]*string
                                    	MostFree bool `mapstructure:"most_free"`
                                    	Random   bool `mapstructure:"random"`
                                    }

                                    func (*SubnetFilterOptions) Empty

                                    func (d *SubnetFilterOptions) Empty() bool

                                    type TagMap

                                    type TagMap map[string]string

                                    func (TagMap) EC2Tags

                                    func (t TagMap) EC2Tags(ctx interpolate.Context, region string, state multistep.StateBag) (EC2Tags, error)

                                    func (TagMap) IsSet

                                    func (t TagMap) IsSet() bool

                                    type VpcFilterOptions

                                    type VpcFilterOptions struct {
                                    	Filters map[*string]*string
                                    }

                                    func (*VpcFilterOptions) Empty

                                    func (d *VpcFilterOptions) Empty() bool