AWS Cloudformation:为用户数据添加参数

时间:2019-05-15 16:54:18

标签: amazon-web-services amazon-cloudformation

需要连接参数,使其为默认值,并且如果默认设置为yes,则仅运行1条命令;如果设置为no,则应忽略

Paramater
Run Playbook
  Type: AWS::EC2::UserData
   Default

UserData: !Base64
        Fn::Sub:
          - |-
            #!/bin/bash
            xxxxxxxxxx
            xxxxxxxxxx
            xxxxxxxxxx
            ansible-playbook test.yml

1 个答案:

答案 0 :(得分:0)

我认为有一些选择,但是我要做的是拥有一个像这样的cloudformation模板:

AWSTemplateFormatVersion: "2010-09-09"

Parameters:
    AnsibleCheckRun:
        Description: Environment type.
        Default: true
        Type: String
        AllowedValues: [true, false]
        ConstraintDescription: Must be true or false

Conditions:
    RunAnsible: !Equals [!Ref AnsibleCheckRun, true]

Resources:
    BuildkiteAgentServer:
        Type: AWS::EC2::Instance
        Properties:
            .
            .
            .
            .
        UserData:
            Fn::Base64:
            Fn::Join:
            - ""
            - - "#!/bin/bash\n"
              - !If [RunAnsible, "ansible-playbook test.yml", AWS::NoValue]

语法可能有点差,因为这超出了我的头脑-但是您正在做的是在模板中创建一个Condition部分,该部分根据预期值评估给定的参数。如果!Equals被评估为匹配项,则ansible-playbook test.yml将被添加到用户数据中。如果参数值与true不匹配,则将没有Ansible行。

这是您可以查看的文档: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-conditions.html