Я думаю, что есть несколько вариантов, но я бы использовал шаблон облачной информации, подобный этому:
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
будет добавлено в пользовательские данные. Если значение параметра не соответствует истине, то не будет строки Ansible.
Это документация, на которую вы можете посмотреть:
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-conditions.html