需要连接参数,使其为默认值,并且如果默认设置为yes,则仅运行1条命令;如果设置为no,则应忽略
Paramater
Run Playbook
Type: AWS::EC2::UserData
Default
UserData: !Base64
Fn::Sub:
- |-
#!/bin/bash
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
ansible-playbook test.yml
答案 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