Merge pull request #4204 from rickard-von-essen/aws_spot_instance_if_non_vpc

Fix 'The AssociatePublicIpAddress parameter is only supported for VPC launches.'
This commit is contained in:
Rickard von Essen 2016-11-24 18:08:21 +01:00 committed by GitHub
commit 2d193df7f6
1 changed files with 14 additions and 8 deletions

View File

@ -202,20 +202,26 @@ func (s *StepRunSourceInstance) Run(state multistep.StateBag) multistep.StepActi
InstanceType: &s.InstanceType, InstanceType: &s.InstanceType,
UserData: &userData, UserData: &userData,
IamInstanceProfile: &ec2.IamInstanceProfileSpecification{Name: &s.IamInstanceProfile}, IamInstanceProfile: &ec2.IamInstanceProfileSpecification{Name: &s.IamInstanceProfile},
NetworkInterfaces: []*ec2.InstanceNetworkInterfaceSpecification{ Placement: &ec2.SpotPlacement{
{ AvailabilityZone: &availabilityZone,
},
BlockDeviceMappings: s.BlockDevices.BuildLaunchDevices(),
EbsOptimized: &s.EbsOptimized,
}
if s.SubnetId != "" && s.AssociatePublicIpAddress {
runOpts.NetworkInterfaces = []*ec2.InstanceNetworkInterfaceSpecification{
&ec2.InstanceNetworkInterfaceSpecification{
DeviceIndex: aws.Int64(0), DeviceIndex: aws.Int64(0),
AssociatePublicIpAddress: &s.AssociatePublicIpAddress, AssociatePublicIpAddress: &s.AssociatePublicIpAddress,
SubnetId: &s.SubnetId, SubnetId: &s.SubnetId,
Groups: securityGroupIds, Groups: securityGroupIds,
DeleteOnTermination: aws.Bool(true), DeleteOnTermination: aws.Bool(true),
}, },
}, }
Placement: &ec2.SpotPlacement{ } else {
AvailabilityZone: &availabilityZone, runOpts.SubnetId = &s.SubnetId
}, runOpts.SecurityGroupIds = securityGroupIds
BlockDeviceMappings: s.BlockDevices.BuildLaunchDevices(),
EbsOptimized: &s.EbsOptimized,
} }
if keyName != "" { if keyName != "" {