繁体   English   中英

cfn-init for cloudformation launchtemplate

[英]cfn-init for cloudformation launchtemplate

你如何在LaunchTemplate中使用cfn-init? 这适用于ECS群集中的EC2实例,在自动缩放组中。

实例的Metadata部分在哪里以及要传递给cnf-init的--resource是什么?

LaunchTemplate:
  Type: AWS::EC2::LaunchTemplate
  Properties:
    LaunchTemplateName: !Sub ${AWS::StackName}-launch-template
    LaunchTemplateData: 
      SecurityGroups: 
        - !Ref DMZSecurityGroup
        - !Ref ECSSecurityGroup
      UserData:
        Fn::Base64:
          !Sub |
            #!/bin/bash -xe
            yum update -y aws-cfn-bootstrap
            /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource ??? --region ${AWS::Region}
            yum -y update

我对元数据的最佳猜测会产生错误:

    Property validation failure: [Encountered unsupported properties in {/LaunchTemplateData}: [Metadata]]

我将元数据放在错误的嵌套级别,它应该与Type:Properties:一起位于最顶层,而不是在Properties:LaunchTemplateData:

LaunchTemplate:
  Type: AWS::EC2::LaunchTemplate
  Metadata: 
    AWS::CloudFormation::Init: 
      config:
        files:
          /var/www/html/index2.html:
            content: TestString
  Properties:
    LaunchTemplateData: 
      SecurityGroupIds: 
        - !GetAtt DMZSecurityGroup.GroupId
        - !GetAtt ECSSecurityGroup.GroupId
      UserData:
        Fn::Base64:
          !Sub |
            #!/bin/bash -xe
            yum update -y aws-cfn-bootstrap
            /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource ECSLaunchTemplate --region ${AWS::Region}
            yum -y update

只有在cloudformation模板本身为您的实例定义一些初始化步骤时,才应使用cfn-init

cfn-init脚本告诉cloudformation从模板定义( AWS::CloudFormation::Init部分)读取配置步骤,并在实例上“执行”它们。

您还可以通过在用户数据部分中传递shell脚本来引导您的实例。

在您的情况下,由于我看不到YAML文件中定义的任何引导程序配置步骤,因此无需在用户数据脚本中调用cfn-init

有关cfn-init更多信息: httpscfn-init

有关AWS::CloudFormation::Init更多信息: https AWS::CloudFormation::Init

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM