common

package
v1.0.0-rc2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 30, 2017 License: MPL-2.0 Imports: 40 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

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

Functions

func ConvertToEC2Tags

func ConvertToEC2Tags(tags map[string]string, region, sourceAmiId string, ctx interpolate.Context) ([]*ec2.Tag, error)

func GetInstanceMetaData

func GetInstanceMetaData(path string) (contents []byte, err error)

func ReportTags

func ReportTags(ui packer.Ui, tags []*ec2.Tag)

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, private bool) 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                 map[string]string `mapstructure:"tags"`
	AMIEnhancedNetworking   bool              `mapstructure:"enhanced_networking"`
	AMIForceDeregister      bool              `mapstructure:"force_deregister"`
	AMIForceDeleteSnapshot  bool              `mapstructure:"force_delete_snapshot"`
	AMIEncryptBootVolume    bool              `mapstructure:"encrypt_boot"`
	AMIKmsKeyId             string            `mapstructure:"kms_key_id"`
	SnapshotTags            map[string]string `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(ctx *interpolate.Context) []error

type AccessConfig

type AccessConfig struct {
	AccessKey      string `mapstructure:"access_key"`
	SecretKey      string `mapstructure:"secret_key"`
	RawRegion      string `mapstructure:"region"`
	SkipValidation bool   `mapstructure:"skip_region_validation"`
	Token          string `mapstructure:"token"`
	ProfileName    string `mapstructure:"profile"`
}

AccessConfig is for common configuration related to AWS access

func (*AccessConfig) Config

func (c *AccessConfig) Config() (*aws.Config, 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) Prepare

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

func (*AccessConfig) Region

func (c *AccessConfig) Region() (string, error)

Region returns the aws.Region object for access to AWS services, requesting the region from the instance metadata if possible.

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.
	Conn *ec2.EC2
}

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

BlockDevice

type BlockDevices

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

func (*BlockDevices) Prepare

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

type BuildInfoTemplate

type BuildInfoTemplate struct {
	SourceAMI   string
	BuildRegion string
}

type CLIConfig

type CLIConfig struct {
	ProfileName   string
	SourceProfile string

	AssumeRoleInput   *sts.AssumeRoleInput
	SourceCredentials *credentials.Credentials
	// contains filtered or unexported fields
}

func NewFromProfile

func NewFromProfile(name string) (*CLIConfig, error)

Return a new CLIConfig with stored profile settings

func (*CLIConfig) CredentialsFromProfile

func (c *CLIConfig) CredentialsFromProfile(conf *aws.Config) (*credentials.Credentials, error)

Return AWS Credentials using current profile. Must supply source config.

func (*CLIConfig) Prepare

func (c *CLIConfig) Prepare(name string) error

Sets params in the struct based on the file section

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"`
	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"`
	SSHPrivateIp   bool                `mapstructure:"ssh_private_ip"`
}

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

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
	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
	// contains filtered or unexported fields
}

func (*StepCreateEncryptedAMICopy) Cleanup

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

func (*StepCreateEncryptedAMICopy) Run

type StepCreateTags

type StepCreateTags struct {
	Tags         map[string]string
	SnapshotTags map[string]string
	Ctx          interpolate.Context
}

func (*StepCreateTags) Cleanup

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

func (*StepCreateTags) Run

type StepDeregisterAMI

type StepDeregisterAMI struct {
	ForceDeregister     bool
	ForceDeleteSnapshot bool
	AMIName             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 {
	EnableEnhancedNetworking 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
	Debug                             bool
	EbsOptimized                      bool
	ExpectedRootDevice                string
	IamInstanceProfile                string
	InstanceInitiatedShutdownBehavior string
	InstanceType                      string
	SourceAMI                         string
	SpotPrice                         string
	SpotPriceProduct                  string
	SubnetId                          string
	Tags                              map[string]string
	UserData                          string
	UserDataFile                      string
	Ctx                               interpolate.Context
	// contains filtered or unexported fields
}

func (*StepRunSourceInstance) Cleanup

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

func (*StepRunSourceInstance) Run

type StepSecurityGroup

type StepSecurityGroup struct {
	CommConfig       *communicator.Config
	SecurityGroupIds []string
	VpcId            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
	EnhancedNetworking 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 {
	SpotPrice           string
	DisableStopInstance bool
}

func (*StepStopEBSBackedInstance) Cleanup

func (*StepStopEBSBackedInstance) Run

type StepTagEBSVolumes

type StepTagEBSVolumes struct {
	VolumeRunTags map[string]string
	Ctx           interpolate.Context
}

func (*StepTagEBSVolumes) Cleanup

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

func (*StepTagEBSVolumes) Run

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL