Documentation ¶
Index ¶
- Variables
- func SSHConfig(useAgent bool, username, password string) func(multistep.StateBag) (*ssh.ClientConfig, error)
- func SSHHost(e ec2Describer, sshInterface string) func(multistep.StateBag) (string, error)
- func SleepSeconds() (seconds int)
- func TimeoutSeconds() (seconds int)
- func ValidateRegion(region string) bool
- func WaitForState(conf *StateChangeConf) (i interface{}, err error)
- type AMIBlockDevices
- type AMIConfig
- type AccessConfig
- type AmiFilterOptions
- type Artifact
- type BlockDevice
- type BlockDevices
- type BuildInfoTemplate
- type EC2Tags
- type LaunchBlockDevices
- type RunConfig
- type StateChangeConf
- type StateRefreshFunc
- func AMIStateRefreshFunc(conn *ec2.EC2, imageId string) StateRefreshFunc
- func ImportImageRefreshFunc(conn *ec2.EC2, importTaskId string) StateRefreshFunc
- func InstanceStateRefreshFunc(conn *ec2.EC2, instanceId string) StateRefreshFunc
- func SpotRequestStateRefreshFunc(conn *ec2.EC2, spotRequestId string) StateRefreshFunc
- type StepAMIRegionCopy
- type StepCreateEncryptedAMICopy
- type StepCreateTags
- type StepDeregisterAMI
- type StepGetPassword
- type StepKeyPair
- type StepModifyAMIAttributes
- type StepModifyEBSBackedInstance
- type StepPreValidate
- type StepRunSourceInstance
- type StepRunSpotInstance
- type StepSecurityGroup
- type StepSourceAMIInfo
- type StepStopEBSBackedInstance
- type TagMap
Constants ¶
This section is empty.
Variables ¶
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 ¶
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 ¶
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 ¶ added in v1.2.0
func (c *AccessConfig) IsChinaCloud() bool
func (*AccessConfig) IsGovCloud ¶ added in v1.2.0
func (c *AccessConfig) IsGovCloud() bool
func (*AccessConfig) Prepare ¶
func (c *AccessConfig) Prepare(ctx *interpolate.Context) []error
func (*AccessConfig) Session ¶ added in v1.0.1
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 ¶ added in v1.2.0
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.
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 ¶ added in v1.2.0
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 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 ¶ added in v1.1.3
type StateChangeConf ¶
type StateChangeConf struct { Pending []string Refresh StateRefreshFunc StepState multistep.StateBag Target string }
StateChangeConf is the configuration struct used for `WaitForState`.
type StateRefreshFunc ¶
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 ¶
func (s *StepAMIRegionCopy) Run(_ context.Context, state multistep.StateBag) multistep.StepAction
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 ¶
func (s *StepCreateEncryptedAMICopy) Run(_ context.Context, state multistep.StateBag) multistep.StepAction
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 ¶
func (s *StepCreateTags) Run(_ context.Context, state multistep.StateBag) multistep.StepAction
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 ¶
func (s *StepDeregisterAMI) Run(_ context.Context, state multistep.StateBag) multistep.StepAction
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 ¶
func (s *StepGetPassword) Run(_ context.Context, state multistep.StateBag) multistep.StepAction
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 ¶
func (s *StepKeyPair) Run(_ context.Context, state multistep.StateBag) multistep.StepAction
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 ¶
func (s *StepModifyAMIAttributes) Run(_ context.Context, state multistep.StateBag) multistep.StepAction
type StepModifyEBSBackedInstance ¶
func (*StepModifyEBSBackedInstance) Cleanup ¶
func (s *StepModifyEBSBackedInstance) Cleanup(state multistep.StateBag)
func (*StepModifyEBSBackedInstance) Run ¶
func (s *StepModifyEBSBackedInstance) Run(_ context.Context, state multistep.StateBag) multistep.StepAction
type StepPreValidate ¶
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 ¶
func (s *StepPreValidate) Run(_ context.Context, state multistep.StateBag) multistep.StepAction
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 ¶
func (s *StepRunSourceInstance) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction
type StepRunSpotInstance ¶ added in v1.1.1
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 ¶ added in v1.1.1
func (s *StepRunSpotInstance) Cleanup(state multistep.StateBag)
func (*StepRunSpotInstance) Run ¶ added in v1.1.1
func (s *StepRunSpotInstance) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction
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 ¶
func (s *StepSecurityGroup) Run(_ context.Context, state multistep.StateBag) multistep.StepAction
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 ¶
func (s *StepSourceAMIInfo) Run(_ context.Context, state multistep.StateBag) multistep.StepAction
type StepStopEBSBackedInstance ¶
func (*StepStopEBSBackedInstance) Cleanup ¶
func (s *StepStopEBSBackedInstance) Cleanup(multistep.StateBag)
func (*StepStopEBSBackedInstance) Run ¶
func (s *StepStopEBSBackedInstance) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction
Source Files ¶
- access_config.go
- ami_config.go
- artifact.go
- block_device.go
- interpolate_build_info.go
- regions.go
- run_config.go
- ssh.go
- state.go
- step_ami_region_copy.go
- step_create_tags.go
- step_deregister_ami.go
- step_encrypted_ami.go
- step_get_password.go
- step_key_pair.go
- step_modify_ami_attributes.go
- step_modify_ebs_instance.go
- step_pre_validate.go
- step_run_source_instance.go
- step_run_spot_instance.go
- step_security_group.go
- step_source_ami_info.go
- step_stop_ebs_instance.go
- tags.go
- template_funcs.go