|
|
|
|
@ -69,6 +69,13 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, error) {
|
|
|
|
|
errs = packer.MultiErrorAppend(errs, b.config.BlockDevices.Prepare(&b.config.ctx)...)
|
|
|
|
|
errs = packer.MultiErrorAppend(errs, b.config.RunConfig.Prepare(&b.config.ctx)...)
|
|
|
|
|
|
|
|
|
|
if b.config.IsSpotInstance() && (b.config.AMIENASupport || b.config.AMISriovNetSupport) {
|
|
|
|
|
errs = packer.MultiErrorAppend(errs,
|
|
|
|
|
fmt.Errorf("Spot instances do not support modification, which is required "+
|
|
|
|
|
"when either `ena_support` or `sriov_support` are set. Please ensure "+
|
|
|
|
|
"you use an AMI that already has either SR-IOV or ENA enabled."))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if errs != nil && len(errs.Errors) > 0 {
|
|
|
|
|
return nil, errs
|
|
|
|
|
}
|
|
|
|
|
@ -110,47 +117,46 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe
|
|
|
|
|
state.Put("ui", ui)
|
|
|
|
|
|
|
|
|
|
var instanceStep multistep.Step
|
|
|
|
|
isSpotInstance := b.config.SpotPrice != "" && b.config.SpotPrice != "0"
|
|
|
|
|
|
|
|
|
|
if isSpotInstance {
|
|
|
|
|
if b.config.IsSpotInstance() {
|
|
|
|
|
instanceStep = &awscommon.StepRunSpotInstance{
|
|
|
|
|
Debug: b.config.PackerDebug,
|
|
|
|
|
ExpectedRootDevice: "ebs",
|
|
|
|
|
SpotPrice: b.config.SpotPrice,
|
|
|
|
|
SpotPriceProduct: b.config.SpotPriceAutoProduct,
|
|
|
|
|
InstanceType: b.config.InstanceType,
|
|
|
|
|
UserData: b.config.UserData,
|
|
|
|
|
UserDataFile: b.config.UserDataFile,
|
|
|
|
|
SourceAMI: b.config.SourceAmi,
|
|
|
|
|
IamInstanceProfile: b.config.IamInstanceProfile,
|
|
|
|
|
SubnetId: b.config.SubnetId,
|
|
|
|
|
AssociatePublicIpAddress: b.config.AssociatePublicIpAddress,
|
|
|
|
|
EbsOptimized: b.config.EbsOptimized,
|
|
|
|
|
AvailabilityZone: b.config.AvailabilityZone,
|
|
|
|
|
BlockDevices: b.config.BlockDevices,
|
|
|
|
|
Tags: b.config.RunTags,
|
|
|
|
|
VolumeTags: b.config.VolumeRunTags,
|
|
|
|
|
Ctx: b.config.ctx,
|
|
|
|
|
AssociatePublicIpAddress: b.config.AssociatePublicIpAddress,
|
|
|
|
|
AvailabilityZone: b.config.AvailabilityZone,
|
|
|
|
|
BlockDevices: b.config.BlockDevices,
|
|
|
|
|
Ctx: b.config.ctx,
|
|
|
|
|
Debug: b.config.PackerDebug,
|
|
|
|
|
EbsOptimized: b.config.EbsOptimized,
|
|
|
|
|
ExpectedRootDevice: "ebs",
|
|
|
|
|
IamInstanceProfile: b.config.IamInstanceProfile,
|
|
|
|
|
InstanceInitiatedShutdownBehavior: b.config.InstanceInitiatedShutdownBehavior,
|
|
|
|
|
InstanceType: b.config.InstanceType,
|
|
|
|
|
SourceAMI: b.config.SourceAmi,
|
|
|
|
|
SpotPrice: b.config.SpotPrice,
|
|
|
|
|
SpotPriceProduct: b.config.SpotPriceAutoProduct,
|
|
|
|
|
SubnetId: b.config.SubnetId,
|
|
|
|
|
Tags: b.config.RunTags,
|
|
|
|
|
UserData: b.config.UserData,
|
|
|
|
|
UserDataFile: b.config.UserDataFile,
|
|
|
|
|
VolumeTags: b.config.VolumeRunTags,
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
instanceStep = &awscommon.StepRunSourceInstance{
|
|
|
|
|
Debug: b.config.PackerDebug,
|
|
|
|
|
ExpectedRootDevice: "ebs",
|
|
|
|
|
InstanceType: b.config.InstanceType,
|
|
|
|
|
UserData: b.config.UserData,
|
|
|
|
|
UserDataFile: b.config.UserDataFile,
|
|
|
|
|
SourceAMI: b.config.SourceAmi,
|
|
|
|
|
IamInstanceProfile: b.config.IamInstanceProfile,
|
|
|
|
|
SubnetId: b.config.SubnetId,
|
|
|
|
|
AssociatePublicIpAddress: b.config.AssociatePublicIpAddress,
|
|
|
|
|
EbsOptimized: b.config.EbsOptimized,
|
|
|
|
|
AvailabilityZone: b.config.AvailabilityZone,
|
|
|
|
|
BlockDevices: b.config.BlockDevices,
|
|
|
|
|
Tags: b.config.RunTags,
|
|
|
|
|
VolumeTags: b.config.VolumeRunTags,
|
|
|
|
|
Ctx: b.config.ctx,
|
|
|
|
|
AssociatePublicIpAddress: b.config.AssociatePublicIpAddress,
|
|
|
|
|
AvailabilityZone: b.config.AvailabilityZone,
|
|
|
|
|
BlockDevices: b.config.BlockDevices,
|
|
|
|
|
Ctx: b.config.ctx,
|
|
|
|
|
Debug: b.config.PackerDebug,
|
|
|
|
|
EbsOptimized: b.config.EbsOptimized,
|
|
|
|
|
ExpectedRootDevice: "ebs",
|
|
|
|
|
IamInstanceProfile: b.config.IamInstanceProfile,
|
|
|
|
|
InstanceInitiatedShutdownBehavior: b.config.InstanceInitiatedShutdownBehavior,
|
|
|
|
|
InstanceType: b.config.InstanceType,
|
|
|
|
|
SourceAMI: b.config.SourceAmi,
|
|
|
|
|
SubnetId: b.config.SubnetId,
|
|
|
|
|
Tags: b.config.RunTags,
|
|
|
|
|
UserData: b.config.UserData,
|
|
|
|
|
UserDataFile: b.config.UserDataFile,
|
|
|
|
|
VolumeTags: b.config.VolumeRunTags,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -201,7 +207,7 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe
|
|
|
|
|
},
|
|
|
|
|
&common.StepProvision{},
|
|
|
|
|
&awscommon.StepStopEBSBackedInstance{
|
|
|
|
|
Skip: isSpotInstance,
|
|
|
|
|
Skip: b.config.IsSpotInstance(),
|
|
|
|
|
DisableStopInstance: b.config.DisableStopInstance,
|
|
|
|
|
},
|
|
|
|
|
&awscommon.StepModifyEBSBackedInstance{
|
|
|
|
|
|