From 565787d09807a62072dc0b41adba0a7df5aa9aa2 Mon Sep 17 00:00:00 2001 From: Sumanth Ravipati Date: Tue, 29 Aug 2023 12:53:35 -0700 Subject: [PATCH 1/3] CLD-791 Launch Template feature changes commit --- mlcluster-vpc.template | 480 ++++++++++++++++++++++------------------- mlcluster.template | 480 ++++++++++++++++++++++------------------- 2 files changed, 506 insertions(+), 454 deletions(-) diff --git a/mlcluster-vpc.template b/mlcluster-vpc.template index 3815a0c..efc92b5 100644 --- a/mlcluster-vpc.template +++ b/mlcluster-vpc.template @@ -586,7 +586,7 @@ Parameters: Description: Name of an existing EC2 KeyPair to enable SSH access to the instance. Type: String NumberOfZones: - Description: Total number of Availability Zones, which can be 1 or 3. Load balancer type depends on the number of zones selected. Select 3 zones for Application Load Balancer (OR) Select 1 zone for Classic Load Balancer. + Description: Total number of Availability Zones, which can be 1 or 3. Select 3 zones for Application Load Balancer. Once the stack has been created, the number of Availability Zones cannot be changed. Type: Number AllowedValues: - 1 @@ -881,7 +881,9 @@ Resources: Properties: VPCZoneIdentifier: - !GetAtt [VpcStack, Outputs.PrivateSubnet1Id] - LaunchConfigurationName: !Ref LaunchConfig1 + LaunchTemplate: + LaunchTemplateId: !Ref LaunchTemp1 + Version: !GetAtt LaunchTemp1.LatestVersionNumber MinSize: '0' MaxSize: !Ref NodesPerZone DesiredCapacity: !Ref NodesPerZone @@ -934,7 +936,9 @@ Resources: Properties: VPCZoneIdentifier: - !GetAtt [VpcStack, Outputs.PrivateSubnet1Id] - LaunchConfigurationName: !Ref LaunchConfig1 + LaunchTemplate: + LaunchTemplateId: !Ref LaunchTemp1 + Version: !GetAtt LaunchTemp1.LatestVersionNumber MinSize: '0' MaxSize: !Ref NodesPerZone DesiredCapacity: !Ref NodesPerZone @@ -997,7 +1001,9 @@ Resources: Properties: VPCZoneIdentifier: - !GetAtt [VpcStack, Outputs.PrivateSubnet2Id] - LaunchConfigurationName: !Ref LaunchConfig2 + LaunchTemplate: + LaunchTemplateId: !Ref LaunchTemp2 + Version: !GetAtt LaunchTemp2.LatestVersionNumber MinSize: '0' MaxSize: !Ref NodesPerZone DesiredCapacity: !Ref NodesPerZone @@ -1060,7 +1066,9 @@ Resources: Properties: VPCZoneIdentifier: - !GetAtt [VpcStack, Outputs.PrivateSubnet3Id] - LaunchConfigurationName: !Ref LaunchConfig3 + LaunchTemplate: + LaunchTemplateId: !Ref LaunchTemp3 + Version: !GetAtt LaunchTemp3.LatestVersionNumber MinSize: '0' MaxSize: !Ref NodesPerZone DesiredCapacity: !Ref NodesPerZone @@ -1163,272 +1171,290 @@ Resources: FromPort: '7997' ToPort: '7997' CidrIp: 0.0.0.0/0 - LaunchConfig1: - Type: 'AWS::AutoScaling::LaunchConfiguration' + LaunchTemp1: + Type: 'AWS::EC2::LaunchTemplate' DependsOn: - InstanceSecurityGroup Properties: - BlockDeviceMappings: - - DeviceName: /dev/xvda - Ebs: - VolumeSize: 40 - - DeviceName: /dev/sdf - NoDevice: true - Ebs: {} - KeyName: !Ref KeyName - ImageId: !If [EssentialEnterprise, !FindInMap [LicenseRegion2AMI,!Ref 'AWS::Region',"Enterprise"], !FindInMap [LicenseRegion2AMI, !Ref 'AWS::Region', "BYOL"]] - UserData: !Base64 - 'Fn::Join': - - '' - - - MARKLOGIC_CLUSTER_NAME= - - !Ref MarkLogicDDBTable - - |+ + LaunchTemplateData: + BlockDeviceMappings: + - DeviceName: /dev/xvda + Ebs: + VolumeSize: 40 + - DeviceName: /dev/sdf + NoDevice: true + Ebs: {} + KeyName: !Ref KeyName + ImageId: !If [EssentialEnterprise, !FindInMap [LicenseRegion2AMI,!Ref 'AWS::Region',"Enterprise"], !FindInMap [LicenseRegion2AMI, !Ref 'AWS::Region', "BYOL"]] + UserData: !Base64 + 'Fn::Join': + - '' + - - MARKLOGIC_CLUSTER_NAME= + - !Ref MarkLogicDDBTable + - |+ - - MARKLOGIC_EBS_VOLUME= - - !Ref MarklogicVolume1 - - ',:' - - !Ref VolumeSize - - '::' - - !Ref VolumeType - - ':' - - !If - - GP3 - - !Ref VolumeIOPS - - '' - - ':' - - !If - - GP3 - - !Ref VolumeThroughput - - '' - - | - :,* - - | - MARKLOGIC_NODE_NAME=NodeA# - - MARKLOGIC_ADMIN_USERNAME= - - !Ref AdminUser - - |+ + - MARKLOGIC_EBS_VOLUME= + - !Ref MarklogicVolume1 + - ',:' + - !Ref VolumeSize + - '::' + - !Ref VolumeType + - ':' + - !If + - GP3 + - !Ref VolumeIOPS + - '' + - ':' + - !If + - GP3 + - !Ref VolumeThroughput + - '' + - | + :,* + - | + MARKLOGIC_NODE_NAME=NodeA# + - MARKLOGIC_ADMIN_USERNAME= + - !Ref AdminUser + - |+ - - MARKLOGIC_ADMIN_PASSWORD= - - !Ref AdminPass - - |+ + - MARKLOGIC_ADMIN_PASSWORD= + - !Ref AdminPass + - |+ - - | - MARKLOGIC_CLUSTER_MASTER=1 - - MARKLOGIC_LICENSEE= - - !Ref Licensee - - |+ + - | + MARKLOGIC_CLUSTER_MASTER=1 + - MARKLOGIC_LICENSEE= + - !Ref Licensee + - |+ - - MARKLOGIC_LICENSE_KEY= - - !Ref LicenseKey - - |+ + - MARKLOGIC_LICENSE_KEY= + - !Ref LicenseKey + - |+ - - MARKLOGIC_LOG_SNS= - - !Ref LogSNS - - |+ + - MARKLOGIC_LOG_SNS= + - !Ref LogSNS + - |+ - - MARKLOGIC_AWS_SWAP_SIZE= - - 32 - - |+ + - MARKLOGIC_AWS_SWAP_SIZE= + - 32 + - |+ - - !If - - UseVolumeEncryption - - !Join + - !If + - UseVolumeEncryption + - !Join + - '' + - - 'MARKLOGIC_EBS_KEY=' + - !If + - HasCustomEBSKey + - !Ref VolumeEncryptionKey + - 'default' - '' - - - 'MARKLOGIC_EBS_KEY=' - - !If - - HasCustomEBSKey - - !Ref VolumeEncryptionKey - - 'default' - - '' - SecurityGroups: - - !Ref InstanceSecurityGroup - InstanceType: !Ref InstanceType - IamInstanceProfile: !Ref IAMRole - SpotPrice: !If - - UseSpot - - !Ref SpotPrice - - !Ref 'AWS::NoValue' + SecurityGroupIds: + - !Ref InstanceSecurityGroup + InstanceType: !Ref InstanceType + IamInstanceProfile: + Arn: !Ref IAMRole + MetadataOptions: + HttpTokens: required + InstanceMarketOptions: !If + - UseSpot + - MarketType: spot + SpotOptions: + MaxPrice: !Ref SpotPrice + - !Ref 'AWS::NoValue' Metadata: 'AWS::CloudFormation::Designer': id: 2efb8cfb-df53-401d-8ff2-34af0dd25993 - LaunchConfig2: + LaunchTemp2: Condition: MultiZone - Type: 'AWS::AutoScaling::LaunchConfiguration' + Type: 'AWS::EC2::LaunchTemplate' DependsOn: - InstanceSecurityGroup Properties: - BlockDeviceMappings: - - DeviceName: /dev/xvda - Ebs: - VolumeSize: 40 - - DeviceName: /dev/sdf - NoDevice: true - Ebs: {} - KeyName: !Ref KeyName - ImageId: !If [EssentialEnterprise, !FindInMap [LicenseRegion2AMI,!Ref 'AWS::Region',"Enterprise"], !FindInMap [LicenseRegion2AMI, !Ref 'AWS::Region', "BYOL"]] - UserData: !Base64 - 'Fn::Join': - - '' - - - MARKLOGIC_CLUSTER_NAME= - - !Ref MarkLogicDDBTable - - |+ + LaunchTemplateData: + BlockDeviceMappings: + - DeviceName: /dev/xvda + Ebs: + VolumeSize: 40 + - DeviceName: /dev/sdf + NoDevice: true + Ebs: {} + KeyName: !Ref KeyName + ImageId: !If [EssentialEnterprise, !FindInMap [LicenseRegion2AMI,!Ref 'AWS::Region',"Enterprise"], !FindInMap [LicenseRegion2AMI, !Ref 'AWS::Region', "BYOL"]] + UserData: !Base64 + 'Fn::Join': + - '' + - - MARKLOGIC_CLUSTER_NAME= + - !Ref MarkLogicDDBTable + - |+ - - MARKLOGIC_EBS_VOLUME= - - !Ref MarklogicVolume2 - - ',:' - - !Ref VolumeSize - - '::' - - !Ref VolumeType - - ':' - - !If - - GP3 - - !Ref VolumeIOPS - - '' - - ':' - - !If - - GP3 - - !Ref VolumeThroughput - - '' - - | - :,* - - | - MARKLOGIC_NODE_NAME=NodeB# - - MARKLOGIC_ADMIN_USERNAME= - - !Ref AdminUser - - |+ + - MARKLOGIC_EBS_VOLUME= + - !Ref MarklogicVolume2 + - ',:' + - !Ref VolumeSize + - '::' + - !Ref VolumeType + - ':' + - !If + - GP3 + - !Ref VolumeIOPS + - '' + - ':' + - !If + - GP3 + - !Ref VolumeThroughput + - '' + - | + :,* + - | + MARKLOGIC_NODE_NAME=NodeB# + - MARKLOGIC_ADMIN_USERNAME= + - !Ref AdminUser + - |+ - - MARKLOGIC_ADMIN_PASSWORD= - - !Ref AdminPass - - |+ + - MARKLOGIC_ADMIN_PASSWORD= + - !Ref AdminPass + - |+ - - | - MARKLOGIC_CLUSTER_MASTER=0 - - MARKLOGIC_LICENSEE= - - !Ref Licensee - - |+ + - | + MARKLOGIC_CLUSTER_MASTER=0 + - MARKLOGIC_LICENSEE= + - !Ref Licensee + - |+ - - MARKLOGIC_LICENSE_KEY= - - !Ref LicenseKey - - |+ + - MARKLOGIC_LICENSE_KEY= + - !Ref LicenseKey + - |+ - - MARKLOGIC_LOG_SNS= - - !Ref LogSNS - - |+ + - MARKLOGIC_LOG_SNS= + - !Ref LogSNS + - |+ - - MARKLOGIC_AWS_SWAP_SIZE= - - 32 - - |+ + - MARKLOGIC_AWS_SWAP_SIZE= + - 32 + - |+ - - !If - - UseVolumeEncryption - - !Join + - !If + - UseVolumeEncryption + - !Join + - '' + - - 'MARKLOGIC_EBS_KEY=' + - !If + - HasCustomEBSKey + - !Ref VolumeEncryptionKey + - 'default' - '' - - - 'MARKLOGIC_EBS_KEY=' - - !If - - HasCustomEBSKey - - !Ref VolumeEncryptionKey - - 'default' - - '' - SecurityGroups: - - !Ref InstanceSecurityGroup - InstanceType: !Ref InstanceType - IamInstanceProfile: !Ref IAMRole - SpotPrice: !If - - UseSpot - - !Ref SpotPrice - - !Ref 'AWS::NoValue' + SecurityGroupIds: + - !Ref InstanceSecurityGroup + InstanceType: !Ref InstanceType + IamInstanceProfile: + Arn: !Ref IAMRole + MetadataOptions: + HttpTokens: required + InstanceMarketOptions: !If + - UseSpot + - MarketType: spot + SpotOptions: + MaxPrice: !Ref SpotPrice + - !Ref 'AWS::NoValue' Metadata: 'AWS::CloudFormation::Designer': id: c8296a50-a29e-4646-aa74-8f1b735a9a3f - LaunchConfig3: + LaunchTemp3: Condition: MultiZone - Type: 'AWS::AutoScaling::LaunchConfiguration' + Type: 'AWS::EC2::LaunchTemplate' DependsOn: - InstanceSecurityGroup Properties: - BlockDeviceMappings: - - DeviceName: /dev/xvda - Ebs: - VolumeSize: 40 - - DeviceName: /dev/sdf - NoDevice: true - Ebs: {} - KeyName: !Ref KeyName - ImageId: !If [EssentialEnterprise, !FindInMap [LicenseRegion2AMI,!Ref 'AWS::Region',"Enterprise"], !FindInMap [LicenseRegion2AMI, !Ref 'AWS::Region', "BYOL"]] - UserData: !Base64 - 'Fn::Join': - - '' - - - MARKLOGIC_CLUSTER_NAME= - - !Ref MarkLogicDDBTable - - |+ + LaunchTemplateData: + BlockDeviceMappings: + - DeviceName: /dev/xvda + Ebs: + VolumeSize: 40 + - DeviceName: /dev/sdf + NoDevice: true + Ebs: {} + KeyName: !Ref KeyName + ImageId: !If [EssentialEnterprise, !FindInMap [LicenseRegion2AMI,!Ref 'AWS::Region',"Enterprise"], !FindInMap [LicenseRegion2AMI, !Ref 'AWS::Region', "BYOL"]] + UserData: !Base64 + 'Fn::Join': + - '' + - - MARKLOGIC_CLUSTER_NAME= + - !Ref MarkLogicDDBTable + - |+ - - MARKLOGIC_EBS_VOLUME= - - !Ref MarklogicVolume3 - - ',:' - - !Ref VolumeSize - - '::' - - !Ref VolumeType - - ':' - - !If - - GP3 - - !Ref VolumeIOPS - - '' - - ':' - - !If - - GP3 - - !Ref VolumeThroughput - - '' - - | - :,* - - | - MARKLOGIC_NODE_NAME=NodeC# - - MARKLOGIC_ADMIN_USERNAME= - - !Ref AdminUser - - |+ + - MARKLOGIC_EBS_VOLUME= + - !Ref MarklogicVolume3 + - ',:' + - !Ref VolumeSize + - '::' + - !Ref VolumeType + - ':' + - !If + - GP3 + - !Ref VolumeIOPS + - '' + - ':' + - !If + - GP3 + - !Ref VolumeThroughput + - '' + - | + :,* + - | + MARKLOGIC_NODE_NAME=NodeC# + - MARKLOGIC_ADMIN_USERNAME= + - !Ref AdminUser + - |+ - - MARKLOGIC_ADMIN_PASSWORD= - - !Ref AdminPass - - |+ + - MARKLOGIC_ADMIN_PASSWORD= + - !Ref AdminPass + - |+ - - | - MARKLOGIC_CLUSTER_MASTER=0 - - MARKLOGIC_LICENSEE= - - !Ref Licensee - - |+ + - | + MARKLOGIC_CLUSTER_MASTER=0 + - MARKLOGIC_LICENSEE= + - !Ref Licensee + - |+ - - MARKLOGIC_LICENSE_KEY= - - !Ref LicenseKey - - |+ + - MARKLOGIC_LICENSE_KEY= + - !Ref LicenseKey + - |+ - - MARKLOGIC_LOG_SNS= - - !Ref LogSNS - - |+ + - MARKLOGIC_LOG_SNS= + - !Ref LogSNS + - |+ - - MARKLOGIC_AWS_SWAP_SIZE= - - 32 - - |+ + - MARKLOGIC_AWS_SWAP_SIZE= + - 32 + - |+ - - !If - - UseVolumeEncryption - - !Join + - !If + - UseVolumeEncryption + - !Join + - '' + - - 'MARKLOGIC_EBS_KEY=' + - !If + - HasCustomEBSKey + - !Ref VolumeEncryptionKey + - 'default' - '' - - - 'MARKLOGIC_EBS_KEY=' - - !If - - HasCustomEBSKey - - !Ref VolumeEncryptionKey - - 'default' - - '' - SecurityGroups: - - !Ref InstanceSecurityGroup - InstanceType: !Ref InstanceType - IamInstanceProfile: !Ref IAMRole - SpotPrice: !If - - UseSpot - - !Ref SpotPrice - - !Ref 'AWS::NoValue' + SecurityGroupIds: + - !Ref InstanceSecurityGroup + InstanceType: !Ref InstanceType + IamInstanceProfile: + Arn: !Ref IAMRole + MetadataOptions: + HttpTokens: required + InstanceMarketOptions: !If + - UseSpot + - MarketType: spot + SpotOptions: + MaxPrice: !Ref SpotPrice + - !Ref 'AWS::NoValue' Metadata: 'AWS::CloudFormation::Designer': id: 7fa68c90-39bc-4874-ad20-8cd8c974ed52 diff --git a/mlcluster.template b/mlcluster.template index a198f89..6237a4f 100644 --- a/mlcluster.template +++ b/mlcluster.template @@ -586,7 +586,7 @@ Parameters: Description: Name of an existing EC2 KeyPair to enable SSH access to the instance Type: String NumberOfZones: - Description: Total number of Availability Zones, which can be 1 or 3. Load balancer type depends on the number of zones selected. Select 3 zones for Application Load Balancer (OR) Select 1 zone for Classic Load Balancer. + Description: Total number of Availability Zones, which can be 1 or 3. Select 3 zones for Application Load Balancer. Once the stack has been created, the number of Availability Zones cannot be changed. Type: Number AllowedValues: - 1 @@ -826,7 +826,9 @@ Resources: Properties: VPCZoneIdentifier: - !Ref PrivateSubnet1 - LaunchConfigurationName: !Ref LaunchConfig1 + LaunchTemplate: + LaunchTemplateId: !Ref LaunchTemp1 + Version: !GetAtt LaunchTemp1.LatestVersionNumber MinSize: '0' MaxSize: !Ref NodesPerZone DesiredCapacity: !Ref NodesPerZone @@ -878,7 +880,9 @@ Resources: Properties: VPCZoneIdentifier: - !Ref PrivateSubnet1 - LaunchConfigurationName: !Ref LaunchConfig1 + LaunchTemplate: + LaunchTemplateId: !Ref LaunchTemp1 + Version: !GetAtt LaunchTemp1.LatestVersionNumber MinSize: '0' MaxSize: !Ref NodesPerZone DesiredCapacity: !Ref NodesPerZone @@ -940,7 +944,9 @@ Resources: Properties: VPCZoneIdentifier: - !Ref PrivateSubnet2 - LaunchConfigurationName: !Ref LaunchConfig2 + LaunchTemplate: + LaunchTemplateId: !Ref LaunchTemp2 + Version: !GetAtt LaunchTemp2.LatestVersionNumber MinSize: '0' MaxSize: !Ref NodesPerZone DesiredCapacity: !Ref NodesPerZone @@ -1002,7 +1008,9 @@ Resources: Properties: VPCZoneIdentifier: - !Ref PrivateSubnet3 - LaunchConfigurationName: !Ref LaunchConfig3 + LaunchTemplate: + LaunchTemplateId: !Ref LaunchTemp3 + Version: !GetAtt LaunchTemp3.LatestVersionNumber MinSize: '0' MaxSize: !Ref NodesPerZone DesiredCapacity: !Ref NodesPerZone @@ -1102,272 +1110,290 @@ Resources: FromPort: '7997' ToPort: '7997' CidrIp: 0.0.0.0/0 - LaunchConfig1: - Type: 'AWS::AutoScaling::LaunchConfiguration' + LaunchTemp1: + Type: 'AWS::EC2::LaunchTemplate' DependsOn: - InstanceSecurityGroup Properties: - BlockDeviceMappings: - - DeviceName: /dev/xvda - Ebs: - VolumeSize: 40 - - DeviceName: /dev/sdf - NoDevice: true - Ebs: {} - KeyName: !Ref KeyName - ImageId: !If [EssentialEnterprise, !FindInMap [LicenseRegion2AMI,!Ref 'AWS::Region',"Enterprise"], !FindInMap [LicenseRegion2AMI, !Ref 'AWS::Region', "BYOL"]] - UserData: !Base64 - 'Fn::Join': - - '' - - - MARKLOGIC_CLUSTER_NAME= - - !Ref MarkLogicDDBTable - - |+ + LaunchTemplateData: + BlockDeviceMappings: + - DeviceName: /dev/xvda + Ebs: + VolumeSize: 40 + - DeviceName: /dev/sdf + NoDevice: true + Ebs: {} + KeyName: !Ref KeyName + ImageId: !If [EssentialEnterprise, !FindInMap [LicenseRegion2AMI,!Ref 'AWS::Region',"Enterprise"], !FindInMap [LicenseRegion2AMI, !Ref 'AWS::Region', "BYOL"]] + UserData: !Base64 + 'Fn::Join': + - '' + - - MARKLOGIC_CLUSTER_NAME= + - !Ref MarkLogicDDBTable + - |+ - - MARKLOGIC_EBS_VOLUME= - - !Ref MarklogicVolume1 - - ',:' - - !Ref VolumeSize - - '::' - - !Ref VolumeType - - ':' - - !If - - GP3 - - !Ref VolumeIOPS - - '' - - ':' - - !If - - GP3 - - !Ref VolumeThroughput - - '' - - | - :,* - - | - MARKLOGIC_NODE_NAME=NodeA# - - MARKLOGIC_ADMIN_USERNAME= - - !Ref AdminUser - - |+ + - MARKLOGIC_EBS_VOLUME= + - !Ref MarklogicVolume1 + - ',:' + - !Ref VolumeSize + - '::' + - !Ref VolumeType + - ':' + - !If + - GP3 + - !Ref VolumeIOPS + - '' + - ':' + - !If + - GP3 + - !Ref VolumeThroughput + - '' + - | + :,* + - | + MARKLOGIC_NODE_NAME=NodeA# + - MARKLOGIC_ADMIN_USERNAME= + - !Ref AdminUser + - |+ - - MARKLOGIC_ADMIN_PASSWORD= - - !Ref AdminPass - - |+ + - MARKLOGIC_ADMIN_PASSWORD= + - !Ref AdminPass + - |+ - - | - MARKLOGIC_CLUSTER_MASTER=1 - - MARKLOGIC_LICENSEE= - - !Ref Licensee - - |+ + - | + MARKLOGIC_CLUSTER_MASTER=1 + - MARKLOGIC_LICENSEE= + - !Ref Licensee + - |+ - - MARKLOGIC_LICENSE_KEY= - - !Ref LicenseKey - - |+ + - MARKLOGIC_LICENSE_KEY= + - !Ref LicenseKey + - |+ - - MARKLOGIC_LOG_SNS= - - !Ref LogSNS - - |+ + - MARKLOGIC_LOG_SNS= + - !Ref LogSNS + - |+ - - MARKLOGIC_AWS_SWAP_SIZE= - - 32 - - |+ + - MARKLOGIC_AWS_SWAP_SIZE= + - 32 + - |+ - - !If - - UseVolumeEncryption - - !Join + - !If + - UseVolumeEncryption + - !Join + - '' + - - 'MARKLOGIC_EBS_KEY=' + - !If + - HasCustomEBSKey + - !Ref VolumeEncryptionKey + - 'default' - '' - - - 'MARKLOGIC_EBS_KEY=' - - !If - - HasCustomEBSKey - - !Ref VolumeEncryptionKey - - 'default' - - '' - SecurityGroups: - - !Ref InstanceSecurityGroup - InstanceType: !Ref InstanceType - IamInstanceProfile: !Ref IAMRole - SpotPrice: !If - - UseSpot - - !Ref SpotPrice - - !Ref 'AWS::NoValue' + SecurityGroupIds: + - !Ref InstanceSecurityGroup + InstanceType: !Ref InstanceType + IamInstanceProfile: + Arn: !Ref IAMRole + MetadataOptions: + HttpTokens: required + InstanceMarketOptions: !If + - UseSpot + - MarketType: spot + SpotOptions: + MaxPrice: !Ref SpotPrice + - !Ref 'AWS::NoValue' Metadata: 'AWS::CloudFormation::Designer': id: 2efb8cfb-df53-401d-8ff2-34af0dd25993 - LaunchConfig2: + LaunchTemp2: Condition: MultiZone - Type: 'AWS::AutoScaling::LaunchConfiguration' + Type: 'AWS::EC2::LaunchTemplate' DependsOn: - InstanceSecurityGroup Properties: - BlockDeviceMappings: - - DeviceName: /dev/xvda - Ebs: - VolumeSize: 40 - - DeviceName: /dev/sdf - NoDevice: true - Ebs: {} - KeyName: !Ref KeyName - ImageId: !If [EssentialEnterprise, !FindInMap [LicenseRegion2AMI,!Ref 'AWS::Region',"Enterprise"], !FindInMap [LicenseRegion2AMI, !Ref 'AWS::Region', "BYOL"]] - UserData: !Base64 - 'Fn::Join': - - '' - - - MARKLOGIC_CLUSTER_NAME= - - !Ref MarkLogicDDBTable - - |+ + LaunchTemplateData: + BlockDeviceMappings: + - DeviceName: /dev/xvda + Ebs: + VolumeSize: 40 + - DeviceName: /dev/sdf + NoDevice: true + Ebs: {} + KeyName: !Ref KeyName + ImageId: !If [EssentialEnterprise, !FindInMap [LicenseRegion2AMI,!Ref 'AWS::Region',"Enterprise"], !FindInMap [LicenseRegion2AMI, !Ref 'AWS::Region', "BYOL"]] + UserData: !Base64 + 'Fn::Join': + - '' + - - MARKLOGIC_CLUSTER_NAME= + - !Ref MarkLogicDDBTable + - |+ - - MARKLOGIC_EBS_VOLUME= - - !Ref MarklogicVolume2 - - ',:' - - !Ref VolumeSize - - '::' - - !Ref VolumeType - - ':' - - !If - - GP3 - - !Ref VolumeIOPS - - '' - - ':' - - !If - - GP3 - - !Ref VolumeThroughput - - '' - - | - :,* - - | - MARKLOGIC_NODE_NAME=NodeB# - - MARKLOGIC_ADMIN_USERNAME= - - !Ref AdminUser - - |+ + - MARKLOGIC_EBS_VOLUME= + - !Ref MarklogicVolume2 + - ',:' + - !Ref VolumeSize + - '::' + - !Ref VolumeType + - ':' + - !If + - GP3 + - !Ref VolumeIOPS + - '' + - ':' + - !If + - GP3 + - !Ref VolumeThroughput + - '' + - | + :,* + - | + MARKLOGIC_NODE_NAME=NodeB# + - MARKLOGIC_ADMIN_USERNAME= + - !Ref AdminUser + - |+ - - MARKLOGIC_ADMIN_PASSWORD= - - !Ref AdminPass - - |+ + - MARKLOGIC_ADMIN_PASSWORD= + - !Ref AdminPass + - |+ - - | - MARKLOGIC_CLUSTER_MASTER=0 - - MARKLOGIC_LICENSEE= - - !Ref Licensee - - |+ + - | + MARKLOGIC_CLUSTER_MASTER=0 + - MARKLOGIC_LICENSEE= + - !Ref Licensee + - |+ - - MARKLOGIC_LICENSE_KEY= - - !Ref LicenseKey - - |+ + - MARKLOGIC_LICENSE_KEY= + - !Ref LicenseKey + - |+ - - MARKLOGIC_LOG_SNS= - - !Ref LogSNS - - |+ + - MARKLOGIC_LOG_SNS= + - !Ref LogSNS + - |+ - - MARKLOGIC_AWS_SWAP_SIZE= - - 32 - - |+ + - MARKLOGIC_AWS_SWAP_SIZE= + - 32 + - |+ - - !If - - UseVolumeEncryption - - !Join + - !If + - UseVolumeEncryption + - !Join + - '' + - - 'MARKLOGIC_EBS_KEY=' + - !If + - HasCustomEBSKey + - !Ref VolumeEncryptionKey + - 'default' - '' - - - 'MARKLOGIC_EBS_KEY=' - - !If - - HasCustomEBSKey - - !Ref VolumeEncryptionKey - - 'default' - - '' - SecurityGroups: - - !Ref InstanceSecurityGroup - InstanceType: !Ref InstanceType - IamInstanceProfile: !Ref IAMRole - SpotPrice: !If - - UseSpot - - !Ref SpotPrice - - !Ref 'AWS::NoValue' + SecurityGroupIds: + - !Ref InstanceSecurityGroup + InstanceType: !Ref InstanceType + IamInstanceProfile: + Arn: !Ref IAMRole + MetadataOptions: + HttpTokens: required + InstanceMarketOptions: !If + - UseSpot + - MarketType: spot + SpotOptions: + MaxPrice: !Ref SpotPrice + - !Ref 'AWS::NoValue' Metadata: 'AWS::CloudFormation::Designer': id: c8296a50-a29e-4646-aa74-8f1b735a9a3f - LaunchConfig3: + LaunchTemp3: Condition: MultiZone - Type: 'AWS::AutoScaling::LaunchConfiguration' + Type: 'AWS::EC2::LaunchTemplate' DependsOn: - InstanceSecurityGroup Properties: - BlockDeviceMappings: - - DeviceName: /dev/xvda - Ebs: - VolumeSize: 40 - - DeviceName: /dev/sdf - NoDevice: true - Ebs: {} - KeyName: !Ref KeyName - ImageId: !If [EssentialEnterprise, !FindInMap [LicenseRegion2AMI,!Ref 'AWS::Region',"Enterprise"], !FindInMap [LicenseRegion2AMI, !Ref 'AWS::Region', "BYOL"]] - UserData: !Base64 - 'Fn::Join': - - '' - - - MARKLOGIC_CLUSTER_NAME= - - !Ref MarkLogicDDBTable - - |+ + LaunchTemplateData: + BlockDeviceMappings: + - DeviceName: /dev/xvda + Ebs: + VolumeSize: 40 + - DeviceName: /dev/sdf + NoDevice: true + Ebs: {} + KeyName: !Ref KeyName + ImageId: !If [EssentialEnterprise, !FindInMap [LicenseRegion2AMI,!Ref 'AWS::Region',"Enterprise"], !FindInMap [LicenseRegion2AMI, !Ref 'AWS::Region', "BYOL"]] + UserData: !Base64 + 'Fn::Join': + - '' + - - MARKLOGIC_CLUSTER_NAME= + - !Ref MarkLogicDDBTable + - |+ - - MARKLOGIC_EBS_VOLUME= - - !Ref MarklogicVolume3 - - ',:' - - !Ref VolumeSize - - '::' - - !Ref VolumeType - - ':' - - !If - - GP3 - - !Ref VolumeIOPS - - '' - - ':' - - !If - - GP3 - - !Ref VolumeThroughput - - '' - - | - :,* - - | - MARKLOGIC_NODE_NAME=NodeC# - - MARKLOGIC_ADMIN_USERNAME= - - !Ref AdminUser - - |+ + - MARKLOGIC_EBS_VOLUME= + - !Ref MarklogicVolume3 + - ',:' + - !Ref VolumeSize + - '::' + - !Ref VolumeType + - ':' + - !If + - GP3 + - !Ref VolumeIOPS + - '' + - ':' + - !If + - GP3 + - !Ref VolumeThroughput + - '' + - | + :,* + - | + MARKLOGIC_NODE_NAME=NodeC# + - MARKLOGIC_ADMIN_USERNAME= + - !Ref AdminUser + - |+ - - MARKLOGIC_ADMIN_PASSWORD= - - !Ref AdminPass - - |+ + - MARKLOGIC_ADMIN_PASSWORD= + - !Ref AdminPass + - |+ - - | - MARKLOGIC_CLUSTER_MASTER=0 - - MARKLOGIC_LICENSEE= - - !Ref Licensee - - |+ + - | + MARKLOGIC_CLUSTER_MASTER=0 + - MARKLOGIC_LICENSEE= + - !Ref Licensee + - |+ - - MARKLOGIC_LICENSE_KEY= - - !Ref LicenseKey - - |+ + - MARKLOGIC_LICENSE_KEY= + - !Ref LicenseKey + - |+ - - MARKLOGIC_LOG_SNS= - - !Ref LogSNS - - |+ + - MARKLOGIC_LOG_SNS= + - !Ref LogSNS + - |+ - - MARKLOGIC_AWS_SWAP_SIZE= - - 32 - - |+ + - MARKLOGIC_AWS_SWAP_SIZE= + - 32 + - |+ - - !If - - UseVolumeEncryption - - !Join + - !If + - UseVolumeEncryption + - !Join + - '' + - - 'MARKLOGIC_EBS_KEY=' + - !If + - HasCustomEBSKey + - !Ref VolumeEncryptionKey + - 'default' - '' - - - 'MARKLOGIC_EBS_KEY=' - - !If - - HasCustomEBSKey - - !Ref VolumeEncryptionKey - - 'default' - - '' - SecurityGroups: - - !Ref InstanceSecurityGroup - InstanceType: !Ref InstanceType - IamInstanceProfile: !Ref IAMRole - SpotPrice: !If - - UseSpot - - !Ref SpotPrice - - !Ref 'AWS::NoValue' + SecurityGroupIds: + - !Ref InstanceSecurityGroup + InstanceType: !Ref InstanceType + IamInstanceProfile: + Arn: !Ref IAMRole + MetadataOptions: + HttpTokens: required + InstanceMarketOptions: !If + - UseSpot + - MarketType: spot + SpotOptions: + MaxPrice: !Ref SpotPrice + - !Ref 'AWS::NoValue' Metadata: 'AWS::CloudFormation::Designer': id: 7fa68c90-39bc-4874-ad20-8cd8c974ed52 From 6bc68059b21c981f5c81b36fe7c4d6d20daeeb68 Mon Sep 17 00:00:00 2001 From: Sumanth Ravipati Date: Tue, 3 Oct 2023 11:08:39 -0700 Subject: [PATCH 2/3] CLD-791: Changes for Launch Templates to use IAM role name instead of ARN --- mlcluster-vpc.template | 6 +++--- mlcluster.template | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mlcluster-vpc.template b/mlcluster-vpc.template index efc92b5..5326159 100644 --- a/mlcluster-vpc.template +++ b/mlcluster-vpc.template @@ -1254,7 +1254,7 @@ Resources: - !Ref InstanceSecurityGroup InstanceType: !Ref InstanceType IamInstanceProfile: - Arn: !Ref IAMRole + Name: !Ref IAMRole MetadataOptions: HttpTokens: required InstanceMarketOptions: !If @@ -1350,7 +1350,7 @@ Resources: - !Ref InstanceSecurityGroup InstanceType: !Ref InstanceType IamInstanceProfile: - Arn: !Ref IAMRole + Name: !Ref IAMRole MetadataOptions: HttpTokens: required InstanceMarketOptions: !If @@ -1446,7 +1446,7 @@ Resources: - !Ref InstanceSecurityGroup InstanceType: !Ref InstanceType IamInstanceProfile: - Arn: !Ref IAMRole + Name: !Ref IAMRole MetadataOptions: HttpTokens: required InstanceMarketOptions: !If diff --git a/mlcluster.template b/mlcluster.template index 6237a4f..5057f8f 100644 --- a/mlcluster.template +++ b/mlcluster.template @@ -1193,7 +1193,7 @@ Resources: - !Ref InstanceSecurityGroup InstanceType: !Ref InstanceType IamInstanceProfile: - Arn: !Ref IAMRole + Name: !Ref IAMRole MetadataOptions: HttpTokens: required InstanceMarketOptions: !If @@ -1289,7 +1289,7 @@ Resources: - !Ref InstanceSecurityGroup InstanceType: !Ref InstanceType IamInstanceProfile: - Arn: !Ref IAMRole + Name: !Ref IAMRole MetadataOptions: HttpTokens: required InstanceMarketOptions: !If @@ -1385,7 +1385,7 @@ Resources: - !Ref InstanceSecurityGroup InstanceType: !Ref InstanceType IamInstanceProfile: - Arn: !Ref IAMRole + Name: !Ref IAMRole MetadataOptions: HttpTokens: required InstanceMarketOptions: !If From 7fc62a82a5ada18f7d5519fe3c46c263b26810ff Mon Sep 17 00:00:00 2001 From: Sumanth Ravipati Date: Wed, 11 Oct 2023 14:08:38 -0700 Subject: [PATCH 3/3] CLD-893: 11.1.0 CFT changes commit --- README.md | 6 +++ mlcluster-vpc.template | 66 +++++++++++++++---------------- mlcluster.template | 66 +++++++++++++++---------------- templates/ml-managedeni.template | 2 +- templates/ml-nodemanager.template | 2 +- templates/ml-vpc.template | 2 +- 6 files changed, 75 insertions(+), 69 deletions(-) diff --git a/README.md b/README.md index 8a4d8db..ef9f1a7 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,12 @@ Since AWS is retiring the Classic Load Balancer (CLB) as of August 15, 2022, the The lambda functions in MarkLogic CloudFormation templates used on AWS are now configured to use Python 3.9. AWS has scheduled the end of support for Python 3.6 by July 2022. +### Launch Templates and IMDSv2 support in the MarkLogic CloudFormation Templates: + +Starting with MarkLogic 11.1.0, the MarkLogic CloudFormation Templates replaces the use of Launch Configurations with Launch Templates. This ensures that MarkLogic CFT users can make use of all of the Amazon EC2 Auto Scaling features now available in Launch Templates. + +Additionally, MarkLogic 11.1.0 adds support for IMDSv2. The IMDSv2 option is set to "required" by default in the 11.1.0 and later CFTs. In order to use MarkLogic Server AMIs before 11.1.0 with the new templates, the templates need to be modified to set IMDSv2 to "optional" as IMDSv2 is not supported in earlier versions of the MarkLogic AMI. + ## Support The cloud-enablement-azre repository is maintained by MarkLogic Engineering and distributed under the [Apache 2.0 license](https://github.com/marklogic/cloud-enablement-aws/blob/master/LICENSE.TXT). Everyone is encouraged to file bug reports, feature requests, and pull requests through [GitHub](https://github.com/marklogic/cloud-enablement-aws/issues/new). Your input is important and will be carefully considered. However, we can’t promise a specific resolution or timeframe for any request. In addition, MarkLogic provides technical support for [releases](https://github.com/marklogic/cloud-enablement-aws/releases) of cloud-enablement-aws to licensed customers under the terms outlined in the [Support Handbook](http://www.marklogic.com/files/Mark_Logic_Support_Handbook.pdf). For more information or to sign up for support, visit [help.marklogic.com](http://help.marklogic.com). diff --git a/mlcluster-vpc.template b/mlcluster-vpc.template index 5326159..df955bd 100644 --- a/mlcluster-vpc.template +++ b/mlcluster-vpc.template @@ -1,8 +1,8 @@ AWSTemplateFormatVersion: 2010-09-09 Description: Deploy a MarkLogic Cluster on AWS with a new VPC Metadata: - version: 11.0.3 - binary: MarkLogic-11.0.3-rhel.x86_64.rpm + version: 11.1.0 + binary: MarkLogic-11.1.0-rhel.x86_64.rpm AWS::CloudFormation::Interface: ParameterGroups: - Label: @@ -694,53 +694,53 @@ Mappings: TemplateUrl: base: 'https://s3.amazonaws.com/marklogic-db-template-releases' S3Directory: - base: '11.0.3' + base: '11.1.0' LicenseRegion2AMI: us-east-1: - Enterprise: ami-004ccb011fe3b95a5 - BYOL: ami-07e5be92aba9d25af + Enterprise: ami-00276ce3cffbf7192 + BYOL: ami-0639541ae8fb8a66c us-east-2: - Enterprise: ami-07cae68a32aa76d77 - BYOL: ami-020c2a30215e4fbb8 + Enterprise: ami-086f0f36e8e939bb1 + BYOL: ami-02742cc9e085cd2e5 us-west-1: - Enterprise: ami-0fe4f0637277d5688 - BYOL: ami-05ffe679314be75d6 + Enterprise: ami-043ef67fe6bece435 + BYOL: ami-0092f900733b214c4 us-west-2: - Enterprise: ami-0ca96606aa63b5b6b - BYOL: ami-0aabc92fa55b75bad + Enterprise: ami-0e3183188cf761f9e + BYOL: ami-0cc023dba5c9a6897 eu-central-1: - Enterprise: ami-0f3ec6e5a6d3b1a53 - BYOL: ami-038d4a856b3e6d40c + Enterprise: ami-0f1eb06bf7b15311a + BYOL: ami-03059f42f3262ae31 eu-west-1: - Enterprise: ami-0e96b2e12e0535029 - BYOL: ami-0e91c4ff1e147b1e7 + Enterprise: ami-0c00019e151f275b5 + BYOL: ami-0e482c05c44ad5198 ap-south-1: - Enterprise: ami-04a625e19e9f85cbf - BYOL: ami-08752d120613dcd8a + Enterprise: ami-00af7b1472cd92cfa + BYOL: ami-0ea77e6ea8203ae11 ap-southeast-1: - Enterprise: ami-06dc44b29ae4ef10f - BYOL: ami-0e616ae1b9efae7d7 + Enterprise: ami-095f47522a0b25238 + BYOL: ami-00c794696b65ff15e ap-southeast-2: - Enterprise: ami-0bfcae40e2182d297 - BYOL: ami-0709c95a3c655f6c2 + Enterprise: ami-09c52e782552dc632 + BYOL: ami-0ba9dadf380e798aa ap-northeast-1: - Enterprise: ami-02c3b4dcc7e6a7df7 - BYOL: ami-045aa9804a5abf65a + Enterprise: ami-0a554acaa956a9468 + BYOL: ami-0783b25dd367627c7 ap-northeast-2: - Enterprise: ami-042792bc3f14da079 - BYOL: ami-04d0824943c4f1789 + Enterprise: ami-0e4cd0e5f213c10f8 + BYOL: ami-0ba8e571efa92a72d sa-east-1: - Enterprise: ami-0baceec4c6f76bd67 - BYOL: ami-04f614c69a87c8683 + Enterprise: ami-03c1e617be08ba1fa + BYOL: ami-02b3f3a58463021a1 eu-west-2: - Enterprise: ami-01f0ba2d1453d4996 - BYOL: ami-0b231a1551482798a + Enterprise: ami-03622ad9b1b29a9ac + BYOL: ami-026f05298a3f8f881 ca-central-1: - Enterprise: ami-04912a8986e959f07 - BYOL: ami-00fb6b8e360f860fa + Enterprise: ami-0d2281121f8ff58b8 + BYOL: ami-04a66d7486fd12322 eu-west-3: - Enterprise: ami-019731086c3aad05e - BYOL: ami-0688b46afcb40c9e5 + Enterprise: ami-0de1e1f0dffc4acd1 + BYOL: ami-00f5c1d2ae112f391 Resources: VpcStack: Type: AWS::CloudFormation::Stack diff --git a/mlcluster.template b/mlcluster.template index 5057f8f..62df1b9 100644 --- a/mlcluster.template +++ b/mlcluster.template @@ -1,8 +1,8 @@ AWSTemplateFormatVersion: 2010-09-09 Description: Deploy a MarkLogic Cluster on AWS in existing VPC (Virtual Private Cloud). Metadata: - version: 11.0.3 - binary: MarkLogic-11.0.3-rhel.x86_64.rpm + version: 11.1.0 + binary: MarkLogic-11.1.0-rhel.x86_64.rpm AWS::CloudFormation::Interface: ParameterGroups: - Label: @@ -668,53 +668,53 @@ Mappings: TemplateUrl: base: 'https://s3.amazonaws.com/marklogic-db-template-releases' S3Directory: - base: '11.0.3' + base: '11.1.0' LicenseRegion2AMI: us-east-1: - Enterprise: ami-004ccb011fe3b95a5 - BYOL: ami-07e5be92aba9d25af + Enterprise: ami-00276ce3cffbf7192 + BYOL: ami-0639541ae8fb8a66c us-east-2: - Enterprise: ami-07cae68a32aa76d77 - BYOL: ami-020c2a30215e4fbb8 + Enterprise: ami-086f0f36e8e939bb1 + BYOL: ami-02742cc9e085cd2e5 us-west-1: - Enterprise: ami-0fe4f0637277d5688 - BYOL: ami-05ffe679314be75d6 + Enterprise: ami-043ef67fe6bece435 + BYOL: ami-0092f900733b214c4 us-west-2: - Enterprise: ami-0ca96606aa63b5b6b - BYOL: ami-0aabc92fa55b75bad + Enterprise: ami-0e3183188cf761f9e + BYOL: ami-0cc023dba5c9a6897 eu-central-1: - Enterprise: ami-0f3ec6e5a6d3b1a53 - BYOL: ami-038d4a856b3e6d40c + Enterprise: ami-0f1eb06bf7b15311a + BYOL: ami-03059f42f3262ae31 eu-west-1: - Enterprise: ami-0e96b2e12e0535029 - BYOL: ami-0e91c4ff1e147b1e7 + Enterprise: ami-0c00019e151f275b5 + BYOL: ami-0e482c05c44ad5198 ap-south-1: - Enterprise: ami-04a625e19e9f85cbf - BYOL: ami-08752d120613dcd8a + Enterprise: ami-00af7b1472cd92cfa + BYOL: ami-0ea77e6ea8203ae11 ap-southeast-1: - Enterprise: ami-06dc44b29ae4ef10f - BYOL: ami-0e616ae1b9efae7d7 + Enterprise: ami-095f47522a0b25238 + BYOL: ami-00c794696b65ff15e ap-southeast-2: - Enterprise: ami-0bfcae40e2182d297 - BYOL: ami-0709c95a3c655f6c2 + Enterprise: ami-09c52e782552dc632 + BYOL: ami-0ba9dadf380e798aa ap-northeast-1: - Enterprise: ami-02c3b4dcc7e6a7df7 - BYOL: ami-045aa9804a5abf65a + Enterprise: ami-0a554acaa956a9468 + BYOL: ami-0783b25dd367627c7 ap-northeast-2: - Enterprise: ami-042792bc3f14da079 - BYOL: ami-04d0824943c4f1789 + Enterprise: ami-0e4cd0e5f213c10f8 + BYOL: ami-0ba8e571efa92a72d sa-east-1: - Enterprise: ami-0baceec4c6f76bd67 - BYOL: ami-04f614c69a87c8683 + Enterprise: ami-03c1e617be08ba1fa + BYOL: ami-02b3f3a58463021a1 eu-west-2: - Enterprise: ami-01f0ba2d1453d4996 - BYOL: ami-0b231a1551482798a + Enterprise: ami-03622ad9b1b29a9ac + BYOL: ami-026f05298a3f8f881 ca-central-1: - Enterprise: ami-04912a8986e959f07 - BYOL: ami-00fb6b8e360f860fa + Enterprise: ami-0d2281121f8ff58b8 + BYOL: ami-04a66d7486fd12322 eu-west-3: - Enterprise: ami-019731086c3aad05e - BYOL: ami-0688b46afcb40c9e5 + Enterprise: ami-0de1e1f0dffc4acd1 + BYOL: ami-00f5c1d2ae112f391 Resources: ManagedEniStack: Type: AWS::CloudFormation::Stack diff --git a/templates/ml-managedeni.template b/templates/ml-managedeni.template index ef22a2f..b7282b9 100644 --- a/templates/ml-managedeni.template +++ b/templates/ml-managedeni.template @@ -1,7 +1,7 @@ AWSTemplateFormatVersion: 2010-09-09 Description: Launch Managed ENI for MarkLogic Cluster on AWS Metadata: - version: 11.0.3 + version: 11.1.0 AWS::CloudFormation::Interface: ParameterGroups: - Label: diff --git a/templates/ml-nodemanager.template b/templates/ml-nodemanager.template index fd16a0e..f24bd6c 100644 --- a/templates/ml-nodemanager.template +++ b/templates/ml-nodemanager.template @@ -1,7 +1,7 @@ AWSTemplateFormatVersion: 2010-09-09 Description: Launch Lambda function for MarkLogic Node Manager on AWS Metadata: - version: 11.0.3 + version: 11.1.0 AWS::CloudFormation::Interface: ParameterGroups: - Label: diff --git a/templates/ml-vpc.template b/templates/ml-vpc.template index c732881..ab0b44d 100644 --- a/templates/ml-vpc.template +++ b/templates/ml-vpc.template @@ -1,7 +1,7 @@ AWSTemplateFormatVersion: 2010-09-09 Description: Create a VPC for MarkLogic cluster Metadata: - version: 11.0.3 + version: 11.1.0 AWS::CloudFormation::Interface: ParameterGroups: - Label: