AWSTemplateFormatVersion: "2010-09-09" Description: Amazon EKS - Managed Node Group Metadata: Rok::StackName: {{EKS_NODEGROUP_CF_STACK}} Resources: {%- set EKS_NODEGROUP_ADD_EXTRA_EBS_VOLUMES=EKS_NODEGROUP_ADD_EXTRA_EBS_VOLUMES|str2py("bool") %} {%- set EKS_NODEGROUP_SUBNETS=EKS_NODEGROUP_SUBNETS|str2py("list") %} NodeLaunchTemplate: Type: AWS::EC2::LaunchTemplate Properties: LaunchTemplateData: BlockDeviceMappings: - DeviceName: /dev/xvda Ebs: DeleteOnTermination: true VolumeSize: {{EKS_NODEGROUP_DISK_SIZE}} VolumeType: gp2 {%- if EKS_NODEGROUP_ADD_EXTRA_EBS_VOLUMES %} - DeviceName: /dev/sdf Ebs: DeleteOnTermination: true VolumeSize: 1000 VolumeType: gp2 {%- endif %} MetadataOptions: HttpTokens: required HttpPutResponseHopLimit: 1 EKSNodegroup: Type: 'AWS::EKS::Nodegroup' Properties: AmiType: AL2_x86_64 ClusterName: {{EKS_CLUSTER}} InstanceTypes: - {{EKS_NODEGROUP_INSTANCE_TYPE}} NodegroupName: {{EKS_NODEGROUP}} NodeRole: 'arn:aws:iam::{{AWS_ACCOUNT_ID}}:role/{{EKS_IAM_NODE_ROLE}}' ScalingConfig: MinSize: 1 DesiredSize: 2 MaxSize: 3 Version: '{{EKS_CLUSTER_VERSION}}' ReleaseVersion: {{EKS_NODEGROUP_AMI_VERSION}} Labels: role: {{EKS_NODEGROUP}} Subnets: {%- for subnet in EKS_NODEGROUP_SUBNETS %} - {{subnet}} {%- endfor %} LaunchTemplate: Id: !Ref NodeLaunchTemplate Outputs: Nodegroup: Description: The Nodegroup Value: !Ref EKSNodegroup LaunchTemplate: Description: The generated LaunchTemplate for the Nodegroup Value: !Ref NodeLaunchTemplate