Облачная информация AWS: добавьте параметр для пользовательских данных - PullRequest
0 голосов
/ 15 мая 2019

Необходимо установить соединение с параметром, установив его по умолчанию, и выполнить только 1 команду, если по умолчанию установлено значение yes, следует игнорировать, если установлено значение no

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

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

1 Ответ

0 голосов
/ 15 мая 2019

Я думаю, что есть несколько вариантов, но я бы использовал шаблон облачной информации, подобный этому:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...