in pkg/cloudprovider/aws/launchtemplate.go [178:212]
func (p *LaunchTemplateProvider) createLaunchTemplate(ctx context.Context, options *launchTemplateOptions) (*ec2.LaunchTemplate, error) {
output, err := p.ec2api.CreateLaunchTemplateWithContext(ctx, &ec2.CreateLaunchTemplateInput{
LaunchTemplateName: aws.String(launchTemplateName(options)),
LaunchTemplateData: &ec2.RequestLaunchTemplateData{
BlockDeviceMappings: []*ec2.LaunchTemplateBlockDeviceMappingRequest{{
DeviceName: aws.String("/dev/xvda"),
Ebs: &ec2.LaunchTemplateEbsBlockDeviceRequest{
Encrypted: aws.Bool(true),
VolumeSize: aws.Int64(20),
},
}},
IamInstanceProfile: &ec2.LaunchTemplateIamInstanceProfileSpecificationRequest{
Name: aws.String(options.InstanceProfile),
},
SecurityGroupIds: aws.StringSlice(options.SecurityGroupsIds),
UserData: aws.String(options.UserData),
ImageId: aws.String(options.AMIID),
MetadataOptions: &ec2.LaunchTemplateInstanceMetadataOptionsRequest{
HttpEndpoint: options.MetadataOptions.HTTPEndpoint,
HttpProtocolIpv6: options.MetadataOptions.HTTPProtocolIPv6,
HttpPutResponseHopLimit: options.MetadataOptions.HTTPPutResponseHopLimit,
HttpTokens: options.MetadataOptions.HTTPTokens,
},
},
TagSpecifications: []*ec2.TagSpecification{{
ResourceType: aws.String(ec2.ResourceTypeLaunchTemplate),
Tags: v1alpha1.MergeTags(ctx, options.Tags),
}},
})
if err != nil {
return nil, err
}
logging.FromContext(ctx).Debugf("Created launch template, %s", *output.LaunchTemplate.LaunchTemplateName)
return output.LaunchTemplate, nil
}