Documentation

Index

Constants

This section is empty.

Variables

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

Functions

func SSHConfig

func SSHConfig(useAgent bool, username, password string) func(multistep.StateBag) (*ssh.ClientConfig, error)

    SSHConfig returns a function that can be used for the SSH communicator config for connecting to the instance created over SSH using the private key or password.

    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 SleepSeconds

      func SleepSeconds() (seconds int)

        Returns 2 seconds by default AWS async operations sometimes takes long times, if there are multiple parallel builds, polling at 2 second frequency will exceed the request limit. Allow 2 seconds to be overwritten with AWS_POLL_DELAY_SECONDS

        func TimeoutSeconds

        func TimeoutSeconds() (seconds int)

          Returns 300 seconds (5 minutes) by default Some AWS operations, like copying an AMI to a distant region, take a very long time Allow user to override with AWS_TIMEOUT_SECONDS environment variable

          func ValidateRegion

          func ValidateRegion(region string) bool

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

            func WaitForState

            func WaitForState(conf *StateChangeConf) (i interface{}, err error)

              WaitForState watches an object and waits for it to achieve a certain state.

              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"`
                	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) 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

                    type AmiFilterOptions

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

                    func (*AmiFilterOptions) Empty

                    func (d *AmiFilterOptions) Empty() 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 {
                        	SourceAMI   string
                        	BuildRegion 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"`
                        	EbsOptimized                      bool              `mapstructure:"ebs_optimized"`
                        	IamInstanceProfile                string            `mapstructure:"iam_instance_profile"`
                        	InstanceType                      string            `mapstructure:"instance_type"`
                        	RunTags                           map[string]string `mapstructure:"run_tags"`
                        	SourceAmi                         string            `mapstructure:"source_ami"`
                        	SourceAmiFilter                   AmiFilterOptions  `mapstructure:"source_ami_filter"`
                        	SpotPrice                         string            `mapstructure:"spot_price"`
                        	SpotPriceAutoProduct              string            `mapstructure:"spot_price_auto_product"`
                        	DisableStopInstance               bool              `mapstructure:"disable_stop_instance"`
                        	SecurityGroupId                   string            `mapstructure:"security_group_id"`
                        	SecurityGroupIds                  []string          `mapstructure:"security_group_ids"`
                        	TemporarySGSourceCidr             string            `mapstructure:"temporary_security_group_source_cidr"`
                        	SubnetId                          string            `mapstructure:"subnet_id"`
                        	TemporaryKeyPairName              string            `mapstructure:"temporary_key_pair_name"`
                        	UserData                          string            `mapstructure:"user_data"`
                        	UserDataFile                      string            `mapstructure:"user_data_file"`
                        	WindowsPasswordTimeout            time.Duration     `mapstructure:"windows_password_timeout"`
                        	VpcId                             string            `mapstructure:"vpc_id"`
                        	InstanceInitiatedShutdownBehavior string            `mapstructure:"shutdown_behavior"`
                        
                        	// Communicator settings
                        	Comm           communicator.Config `mapstructure:",squash"`
                        	SSHKeyPairName string              `mapstructure:"ssh_keypair_name"`
                        	SSHInterface   string              `mapstructure:"ssh_interface"`
                        }

                          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 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.

                              func AMIStateRefreshFunc

                              func AMIStateRefreshFunc(conn *ec2.EC2, imageId string) StateRefreshFunc

                                AMIStateRefreshFunc returns a StateRefreshFunc that is used to watch an AMI for state changes.

                                func ImportImageRefreshFunc

                                func ImportImageRefreshFunc(conn *ec2.EC2, importTaskId string) StateRefreshFunc

                                func InstanceStateRefreshFunc

                                func InstanceStateRefreshFunc(conn *ec2.EC2, instanceId string) StateRefreshFunc

                                  InstanceStateRefreshFunc returns a StateRefreshFunc that is used to watch an EC2 instance.

                                  func SpotRequestStateRefreshFunc

                                  func SpotRequestStateRefreshFunc(conn *ec2.EC2, spotRequestId string) StateRefreshFunc

                                    SpotRequestStateRefreshFunc returns a StateRefreshFunc that is used to watch a spot request for state changes.

                                    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 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
                                    }

                                      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
                                      	SSHAgentAuth         bool
                                      	DebugKeyPath         string
                                      	TemporaryKeyPairName string
                                      	KeyPairName          string
                                      	PrivateKeyFile       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 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
                                        	AvailabilityZone                  string
                                        	BlockDevices                      BlockDevices
                                        	Ctx                               interpolate.Context
                                        	Debug                             bool
                                        	EbsOptimized                      bool
                                        	ExpectedRootDevice                string
                                        	IamInstanceProfile                string
                                        	InstanceInitiatedShutdownBehavior string
                                        	InstanceType                      string
                                        	IsRestricted                      bool
                                        	SourceAMI                         string
                                        	SubnetId                          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
                                        	AvailabilityZone                  string
                                        	BlockDevices                      BlockDevices
                                        	Debug                             bool
                                        	EbsOptimized                      bool
                                        	ExpectedRootDevice                string
                                        	IamInstanceProfile                string
                                        	InstanceInitiatedShutdownBehavior string
                                        	InstanceType                      string
                                        	SourceAMI                         string
                                        	SpotPrice                         string
                                        	SpotPriceProduct                  string
                                        	SubnetId                          string
                                        	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
                                        	SecurityGroupIds      []string
                                        	VpcId                 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
                                        	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 TagMap

                                          type TagMap map[string]string

                                          func (TagMap) EC2Tags

                                          func (t TagMap) EC2Tags(ctx interpolate.Context, region, sourceAMIID string) (EC2Tags, error)

                                          func (TagMap) IsSet

                                          func (t TagMap) IsSet() bool