Ansible - использовать, когда условие в сборнике пьес для ролей - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь добавить условие при в мою ansible -плейбук. Однако я не могу понять точный синтаксис / метод, чтобы сделать это, потому что мои роли используют дополнительные параметры. Ниже упоминается моя книга воспроизведения

---

- name: Deploying application code
  hosts: uat-aegis

  roles:
    - { role: roles/send_slack, slack_message_text: "*`Started : Deploying code for {{ module_name }} on {{ inventory_hostname }}`*"}
    - { role: roles/application_code_backup, backup_directory_name: "NAME", repo_directory: "/path/to/repo" }
    - { role: roles/application_copy_config, repo_directory: "/path/to/repo"}
    - { role: roles/application_git_pull, repo_url: "git@code.git", repo_directory: "/path/to/repo", branch_name: "BRANCH_NAME"}
    - { role: roles/application_pm2_restart, process_name: "NAME" }
    - { role: roles/send_slack, slack_message_text: "*`=== Completed : Deploying code for {{ module_name }} on {{ inventory_hostname }} ===`*"}

Здесь мне нужно выполнить role / application_copy_config только тогда, когда определенное значение переменной истинно. Это значение переменной передается как --extra-vars при выполнении ansible -playbook от Jenkins (параметр логического значения в Execute Script). Я попытался использовать приведенный ниже фрагмент кода, но он не работает.

---

- name: Deploying application code
  hosts: uat-aegis

  roles:
    - { role: roles/send_slack, slack_message_text: "*`Started : Deploying code for {{ module_name }} on {{ inventory_hostname }}`*"}
    - { role: roles/application_code_backup, backup_directory_name: "NAME", repo_directory: "/path/to/repo" }
    - { role: roles/application_copy_config
      when: "copy_config=true", repo_directory: "/path/to/repo"}
    - { role: roles/application_git_pull, repo_url: "git@code.git", repo_directory: "/path/to/repo", branch_name: "BRANCH_NAME"}
    - { role: roles/application_pm2_restart, process_name: "NAME" }
    - { role: roles/send_slack, slack_message_text: "*`=== Completed : Deploying code for {{ module_name }} on {{ inventory_hostname }} ===`*"}

ansible -playbook команда выглядит следующим образом

ansible-playbook plays/deploy_application/code.yml --extra-vars "module_name=$MODULE_NAME config_copy_path=$CURRENT_PATH/ env=$ENVIRONMENT copy_config=$COPY_CONFIG"

Пожалуйста, помогите мне использовать условие when в ansible -плейбук. Это необходимо, потому что мне нужно выполнять роль: role / application_copy_config, только когда значение переменной равно true. Я использовал эту ссылку для добавления условия в роли

1 Ответ

0 голосов
/ 30 апреля 2020

удалось применить условие when для логических значений с использованием фильтра bool, как указано ниже

---

- name: Deploying application code
  hosts: uat-aegis

  roles:
    - { role: roles/send_slack, slack_message_text: "*`Started : Deploying code for {{ module_name }} on {{ inventory_hostname }}`*"}
    - { role: roles/application_code_backup, backup_directory_name: "NAME", repo_directory: "/path/to/repo", when: var1 | bool }
    - { role: roles/application_copy_config, repo_directory: "/path/to/repo"}
    - { role: roles/application_git_pull, repo_url: "git@code.git", repo_directory: "/path/to/repo", branch_name: "BRANCH_NAME", when: var2 | bool}
    - { role: roles/application_pm2_restart, process_name: "NAME", when: not var3 | bool }
    - { role: roles/send_slack, slack_message_text: "*`=== Completed : Deploying code for {{ module_name }} on {{ inventory_hostname }} ===`*"}

Используйте приведенный ниже код для проверки истинного и ложного

when: var1 | bool ----> true
when: not var2 | bool ----> false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...