@@ -693,102 +693,130 @@ Resources:
693
693
Roles :
694
694
- !Ref IAMRole
695
695
696
- AgentLaunchConfiguration :
697
- Type : AWS::AutoScaling::LaunchConfiguration
696
+ AgentLaunchTemplate :
697
+ Type : " AWS::EC2::LaunchTemplate "
698
698
Properties :
699
- AssociatePublicIpAddress : !Ref AssociatePublicIpAddress
700
- SecurityGroups : [ !If [ "CreateSecurityGroup", !Ref SecurityGroup, !Ref SecurityGroupId ] ]
701
- KeyName : !If [ "HasKeyName", !Ref KeyName, !Ref 'AWS::NoValue' ]
702
- IamInstanceProfile : !Ref IAMInstanceProfile
703
- InstanceType : !Ref InstanceType
704
- SpotPrice : !If [ "UseSpotInstances", !Ref SpotPrice, !Ref 'AWS::NoValue' ]
705
- ImageId : !If [ UseDefaultAMI, !FindInMap [ AWSRegion2AMI, !Ref 'AWS::Region', !Ref InstanceOperatingSystem ], !Ref ImageId ]
706
- BlockDeviceMappings :
707
- - DeviceName : !Ref RootVolumeName
708
- Ebs : { VolumeSize: !Ref RootVolumeSize, VolumeType: !Ref RootVolumeType }
709
- UserData :
710
- Fn::Base64 : !If
711
- - UseWindowsAgents
712
- - !Sub
713
- - |
714
- <powershell>
715
- $Env:DOCKER_USERNS_REMAP="${EnableDockerUserNamespaceRemap}"
716
- $Env:DOCKER_EXPERIMENTAL="${EnableDockerExperimental}"
717
- powershell -file C:\buildkite-agent\bin\bk-configure-docker.ps1 >> C:\buildkite-agent\elastic-stack.log
718
-
719
- $Env:BUILDKITE_STACK_NAME="${AWS::StackName}"
720
- $Env:BUILDKITE_STACK_VERSION=%v
721
- $Env:BUILDKITE_SCALE_IN_IDLE_PERIOD="${ScaleInIdlePeriod}"
722
- $Env:BUILDKITE_SECRETS_BUCKET="${LocalSecretsBucket}"
723
- $Env:BUILDKITE_AGENT_TOKEN="${BuildkiteAgentToken}"
724
- $Env:BUILDKITE_AGENTS_PER_INSTANCE="${AgentsPerInstance}"
725
- $Env:BUILDKITE_AGENT_TAGS="${BuildkiteAgentTags}"
726
- $Env:BUILDKITE_AGENT_TIMESTAMP_LINES="${BuildkiteAgentTimestampLines}"
727
- $Env:BUILDKITE_AGENT_EXPERIMENTS="${BuildkiteAgentExperiments}"
728
- $Env:BUILDKITE_AGENT_RELEASE="${BuildkiteAgentRelease}"
729
- $Env:BUILDKITE_QUEUE="${BuildkiteQueue}"
730
- $Env:BUILDKITE_AGENT_ENABLE_GIT_MIRRORS_EXPERIMENT="${EnableAgentGitMirrorsExperiment}"
731
- $Env:BUILDKITE_ELASTIC_BOOTSTRAP_SCRIPT="${BootstrapScriptUrl}"
732
- $Env:BUILDKITE_AUTHORIZED_USERS_URL="${AuthorizedUsersUrl}"
733
- $Env:BUILDKITE_ECR_POLICY="${ECRAccessPolicy}"
734
- $Env:BUILDKITE_TERMINATE_INSTANCE_AFTER_JOB="${BuildkiteTerminateInstanceAfterJob}"
735
- $Env:BUILDKITE_ADDITIONAL_SUDO_PERMISSIONS="${BuildkiteAdditionalSudoPermissions}"
736
- $Env:BUILDKITE_WINDOWS_ADMINISTRATOR="${BuildkiteWindowsAdministrator}"
737
- $Env:AWS_DEFAULT_REGION="${AWS::Region}"
738
- $Env:SECRETS_PLUGIN_ENABLED="${EnableSecretsPlugin}"
739
- $Env:ECR_PLUGIN_ENABLED="${EnableECRPlugin}"
740
- $Env:DOCKER_LOGIN_PLUGIN_ENABLED="${EnableDockerLoginPlugin}"
741
- $Env:AWS_REGION="${AWS::Region}"
742
- powershell -file C:\buildkite-agent\bin\bk-install-elastic-stack.ps1 >> C:\buildkite-agent\elastic-stack.log
743
- </powershell>
744
- - {
745
- LocalSecretsBucket : !If [ CreateSecretsBucket, !Ref ManagedSecretsBucket, !Ref SecretsBucket ],
746
- }
747
- - !Sub
748
- - |
749
- Content-Type: multipart/mixed; boundary="==BOUNDARY=="
750
- MIME-Version: 1.0
751
- --==BOUNDARY==
752
- Content-Type: text/cloud-boothook; charset="us-ascii"
753
- DOCKER_USERNS_REMAP=${EnableDockerUserNamespaceRemap} \
754
- DOCKER_EXPERIMENTAL=${EnableDockerExperimental} \
755
- /usr/local/bin/bk-configure-docker.sh
756
- --==BOUNDARY==
757
- Content-Type: text/x-shellscript; charset="us-ascii"
758
- #!/bin/bash -xv
759
- BUILDKITE_STACK_NAME="${AWS::StackName}" \
760
- BUILDKITE_STACK_VERSION=%v \
761
- BUILDKITE_SCALE_IN_IDLE_PERIOD=${ScaleInIdlePeriod} \
762
- BUILDKITE_SECRETS_BUCKET="${LocalSecretsBucket}" \
763
- BUILDKITE_AGENT_TOKEN="${BuildkiteAgentToken}" \
764
- BUILDKITE_AGENTS_PER_INSTANCE="${AgentsPerInstance}" \
765
- BUILDKITE_AGENT_TAGS="${BuildkiteAgentTags}" \
766
- BUILDKITE_AGENT_TIMESTAMP_LINES="${BuildkiteAgentTimestampLines}" \
767
- BUILDKITE_AGENT_EXPERIMENTS="${BuildkiteAgentExperiments}" \
768
- BUILDKITE_AGENT_RELEASE="${BuildkiteAgentRelease}" \
769
- BUILDKITE_QUEUE="${BuildkiteQueue}" \
770
- BUILDKITE_AGENT_ENABLE_GIT_MIRRORS_EXPERIMENT=${EnableAgentGitMirrorsExperiment} \
771
- BUILDKITE_ELASTIC_BOOTSTRAP_SCRIPT="${BootstrapScriptUrl}" \
772
- BUILDKITE_AUTHORIZED_USERS_URL="${AuthorizedUsersUrl}" \
773
- BUILDKITE_ECR_POLICY=${ECRAccessPolicy} \
774
- BUILDKITE_TERMINATE_INSTANCE_AFTER_JOB=${BuildkiteTerminateInstanceAfterJob} \
775
- BUILDKITE_ADDITIONAL_SUDO_PERMISSIONS=${BuildkiteAdditionalSudoPermissions} \
776
- AWS_DEFAULT_REGION=${AWS::Region} \
777
- SECRETS_PLUGIN_ENABLED=${EnableSecretsPlugin} \
778
- ECR_PLUGIN_ENABLED=${EnableECRPlugin} \
779
- DOCKER_LOGIN_PLUGIN_ENABLED=${EnableDockerLoginPlugin} \
780
- AWS_REGION=${AWS::Region} \
781
- /usr/local/bin/bk-install-elastic-stack.sh
782
- --==BOUNDARY==--
783
- - {
784
- LocalSecretsBucket : !If [ CreateSecretsBucket, !Ref ManagedSecretsBucket, !Ref SecretsBucket ],
785
- }
699
+ LaunchTemplateData :
700
+ NetworkInterfaces :
701
+ - DeviceIndex : 0
702
+ AssociatePublicIpAddress : { Ref: AssociatePublicIpAddress }
703
+ Groups :
704
+ - !If [ "CreateSecurityGroup", !Ref SecurityGroup, !Ref SecurityGroupId ]
705
+ KeyName : !If [ "HasKeyName", !Ref KeyName, !Ref 'AWS::NoValue' ]
706
+ IamInstanceProfile :
707
+ Arn : !GetAtt "IAMInstanceProfile.Arn"
708
+ InstanceType : !Ref InstanceType
709
+ MarketType : !If [ "UseSpotInstances", "spot", !Ref 'AWS::NoValue' ]
710
+ SpotOptions : !If
711
+ - UseSpotInstances
712
+ - SpotOptions :
713
+ MaxPrice : !Ref SpotPrice
714
+ - !Ref " AWS::NoValue"
715
+ ImageId : !If [ UseDefaultAMI, !FindInMap [ AWSRegion2AMI, !Ref 'AWS::Region', !Ref InstanceOperatingSystem ], !Ref ImageId ]
716
+ BlockDeviceMappings :
717
+ - DeviceName : /dev/xvda
718
+ Ebs : { VolumeSize: !Ref RootVolumeSize, VolumeType: !Ref RootVolumeType }
719
+ TagSpecifications :
720
+ - ResourceType : instance
721
+ Tags :
722
+ - Key : Role
723
+ Value : buildkite-agent
724
+ - Key : Name
725
+ Value : buildkite-agent
726
+ - Key : BuildkiteAgentRelease
727
+ Value : !Ref BuildkiteAgentRelease
728
+ - Key : BuildkiteQueue
729
+ Value : !Ref BuildkiteQueue
730
+ - !If
731
+ - UseCostAllocationTags
732
+ - Key : !Ref CostAllocationTagName
733
+ Value : !Ref CostAllocationTagValue
734
+ - !Ref " AWS::NoValue"
735
+ UserData :
736
+ Fn::Base64 : !If
737
+ - UseWindowsAgents
738
+ - !Sub
739
+ - |
740
+ <powershell>
741
+ $Env:DOCKER_USERNS_REMAP="${EnableDockerUserNamespaceRemap}"
742
+ $Env:DOCKER_EXPERIMENTAL="${EnableDockerExperimental}"
743
+ powershell -file C:\buildkite-agent\bin\bk-configure-docker.ps1 >> C:\buildkite-agent\elastic-stack.log
744
+
745
+ $Env:BUILDKITE_STACK_NAME="${AWS::StackName}"
746
+ $Env:BUILDKITE_STACK_VERSION=%v
747
+ $Env:BUILDKITE_SCALE_IN_IDLE_PERIOD="${ScaleInIdlePeriod}"
748
+ $Env:BUILDKITE_SECRETS_BUCKET="${LocalSecretsBucket}"
749
+ $Env:BUILDKITE_AGENT_TOKEN="${BuildkiteAgentToken}"
750
+ $Env:BUILDKITE_AGENTS_PER_INSTANCE="${AgentsPerInstance}"
751
+ $Env:BUILDKITE_AGENT_TAGS="${BuildkiteAgentTags}"
752
+ $Env:BUILDKITE_AGENT_TIMESTAMP_LINES="${BuildkiteAgentTimestampLines}"
753
+ $Env:BUILDKITE_AGENT_EXPERIMENTS="${BuildkiteAgentExperiments}"
754
+ $Env:BUILDKITE_AGENT_RELEASE="${BuildkiteAgentRelease}"
755
+ $Env:BUILDKITE_QUEUE="${BuildkiteQueue}"
756
+ $Env:BUILDKITE_AGENT_ENABLE_GIT_MIRRORS_EXPERIMENT="${EnableAgentGitMirrorsExperiment}"
757
+ $Env:BUILDKITE_ELASTIC_BOOTSTRAP_SCRIPT="${BootstrapScriptUrl}"
758
+ $Env:BUILDKITE_AUTHORIZED_USERS_URL="${AuthorizedUsersUrl}"
759
+ $Env:BUILDKITE_ECR_POLICY="${ECRAccessPolicy}"
760
+ $Env:BUILDKITE_TERMINATE_INSTANCE_AFTER_JOB="${BuildkiteTerminateInstanceAfterJob}"
761
+ $Env:BUILDKITE_ADDITIONAL_SUDO_PERMISSIONS="${BuildkiteAdditionalSudoPermissions}"
762
+ $Env:BUILDKITE_WINDOWS_ADMINISTRATOR="${BuildkiteWindowsAdministrator}"
763
+ $Env:AWS_DEFAULT_REGION="${AWS::Region}"
764
+ $Env:SECRETS_PLUGIN_ENABLED="${EnableSecretsPlugin}"
765
+ $Env:ECR_PLUGIN_ENABLED="${EnableECRPlugin}"
766
+ $Env:DOCKER_LOGIN_PLUGIN_ENABLED="${EnableDockerLoginPlugin}"
767
+ $Env:AWS_REGION="${AWS::Region}"
768
+ powershell -file C:\buildkite-agent\bin\bk-install-elastic-stack.ps1 >> C:\buildkite-agent\elastic-stack.log
769
+ </powershell>
770
+ - {
771
+ LocalSecretsBucket : !If [ CreateSecretsBucket, !Ref ManagedSecretsBucket, !Ref SecretsBucket ],
772
+ }
773
+ - !Sub
774
+ - |
775
+ Content-Type: multipart/mixed; boundary="==BOUNDARY=="
776
+ MIME-Version: 1.0
777
+ --==BOUNDARY==
778
+ Content-Type: text/cloud-boothook; charset="us-ascii"
779
+ DOCKER_USERNS_REMAP=${EnableDockerUserNamespaceRemap} \
780
+ DOCKER_EXPERIMENTAL=${EnableDockerExperimental} \
781
+ /usr/local/bin/bk-configure-docker.sh
782
+ --==BOUNDARY==
783
+ Content-Type: text/x-shellscript; charset="us-ascii"
784
+ #!/bin/bash -xv
785
+ BUILDKITE_STACK_NAME="${AWS::StackName}" \
786
+ BUILDKITE_STACK_VERSION=%v \
787
+ BUILDKITE_SCALE_IN_IDLE_PERIOD=${ScaleInIdlePeriod} \
788
+ BUILDKITE_SECRETS_BUCKET="${LocalSecretsBucket}" \
789
+ BUILDKITE_AGENT_TOKEN="${BuildkiteAgentToken}" \
790
+ BUILDKITE_AGENTS_PER_INSTANCE="${AgentsPerInstance}" \
791
+ BUILDKITE_AGENT_TAGS="${BuildkiteAgentTags}" \
792
+ BUILDKITE_AGENT_TIMESTAMP_LINES="${BuildkiteAgentTimestampLines}" \
793
+ BUILDKITE_AGENT_EXPERIMENTS="${BuildkiteAgentExperiments}" \
794
+ BUILDKITE_AGENT_RELEASE="${BuildkiteAgentRelease}" \
795
+ BUILDKITE_QUEUE="${BuildkiteQueue}" \
796
+ BUILDKITE_AGENT_ENABLE_GIT_MIRRORS_EXPERIMENT=${EnableAgentGitMirrorsExperiment} \
797
+ BUILDKITE_ELASTIC_BOOTSTRAP_SCRIPT="${BootstrapScriptUrl}" \
798
+ BUILDKITE_AUTHORIZED_USERS_URL="${AuthorizedUsersUrl}" \
799
+ BUILDKITE_ECR_POLICY=${ECRAccessPolicy} \
800
+ BUILDKITE_TERMINATE_INSTANCE_AFTER_JOB=${BuildkiteTerminateInstanceAfterJob} \
801
+ BUILDKITE_ADDITIONAL_SUDO_PERMISSIONS=${BuildkiteAdditionalSudoPermissions} \
802
+ AWS_DEFAULT_REGION=${AWS::Region} \
803
+ SECRETS_PLUGIN_ENABLED=${EnableSecretsPlugin} \
804
+ ECR_PLUGIN_ENABLED=${EnableECRPlugin} \
805
+ DOCKER_LOGIN_PLUGIN_ENABLED=${EnableDockerLoginPlugin} \
806
+ AWS_REGION=${AWS::Region} \
807
+ /usr/local/bin/bk-install-elastic-stack.sh
808
+ --==BOUNDARY==--
809
+ - {
810
+ LocalSecretsBucket : !If [ CreateSecretsBucket, !Ref ManagedSecretsBucket, !Ref SecretsBucket ],
811
+ }
786
812
787
813
AgentAutoScaleGroup :
788
814
Type : AWS::AutoScaling::AutoScalingGroup
789
815
Properties :
790
816
VPCZoneIdentifier : !If [ "CreateVpcResources", [ !Ref Subnet0, !Ref Subnet1 ], !Ref Subnets ]
791
- LaunchConfigurationName : !Ref AgentLaunchConfiguration
817
+ LaunchTemplate :
818
+ LaunchTemplateId : !Ref AgentLaunchTemplate
819
+ Version : !GetAtt "AgentLaunchTemplate.LatestVersionNumber"
792
820
MinSize : !Ref MinSize
793
821
MaxSize : !Ref MaxSize
794
822
Cooldown : 0
@@ -803,25 +831,6 @@ Resources:
803
831
TerminationPolicies :
804
832
- OldestLaunchConfiguration
805
833
- ClosestToNextInstanceHour
806
- Tags :
807
- - Key : Role
808
- Value : buildkite-agent
809
- PropagateAtLaunch : true
810
- - Key : Name
811
- Value : buildkite-agent
812
- PropagateAtLaunch : true
813
- - Key : BuildkiteAgentRelease
814
- Value : !Ref BuildkiteAgentRelease
815
- PropagateAtLaunch : true
816
- - Key : BuildkiteQueue
817
- Value : !Ref BuildkiteQueue
818
- PropagateAtLaunch : true
819
- - !If
820
- - UseCostAllocationTags
821
- - Key : !Ref CostAllocationTagName
822
- Value : !Ref CostAllocationTagValue
823
- PropagateAtLaunch : true
824
- - !Ref " AWS::NoValue"
825
834
CreationPolicy :
826
835
ResourceSignal :
827
836
Timeout : !Ref InstanceCreationTimeout
0 commit comments