Определите задачу / шаг и запустите его много раз / альтернатива include_tasks - PullRequest
0 голосов
/ 28 мая 2020

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

e.g.
    - name: run_many
      debug:
        msg: "I have been run"

Теперь, вместо добавления этого шага, я могу заранее / определить его, чтобы я мог просто сказать:

- < run this pre-defined step >

Причина в том, что мне нужно запускать это много раз, и я не хочу, чтобы ему приходилось обновлять его в x количестве мест, если это когда-либо понадобится.

At в тот момент, когда я выполняю include_tasks: который, очевидно, добавляет это к моему выводу в качестве шага - но является ли это лучшим / стандартным способом сделать что-то вроде этого?

текущая настройка, которая работает:

$ls ./roles/demo/tasks/
main.yml  run_many.yml
$cat main.yml    
---

-  include_tasks: run_many.yml
-  include_tasks: run_many.yml

Вывод воспроизведения:

TASK [demo: include_tasks] *******************************************************************************************************************************
task path: /home/ansible/roles/demo/tasks/main.yml:3
included: /home/ansible/roles/demo/tasks/run_many.yml for localhost

TASK [demo: run_many] ************************************************************************************************************************************
task path: /home/ansible/roles/demo/tasks/run_many.yml:1
ok: [localhost] => {
    "msg": "I have been run"
}

TASK [demo: include_tasks] *******************************************************************************************************************************
task path: /home/ansible/roles/demo/tasks/main.yml:4
included: /home/ansible/roles/demo/tasks/run_many.yml for localhost

TASK [demo: run_many] ************************************************************************************************************************************
task path: /home/ansible/roles/demo/tasks/run_many.yml:1
ok: [localhost] => {
    "msg": "I have been run"
}

1 Ответ

0 голосов
/ 28 мая 2020

Это будет зависеть от задачи, которую вы хотите выполнить. Например, если вы хотите внести изменения в конфигурацию linux apache, а затем перезапустить apache и у вас есть несколько таких изменений, тогда нет смысла помещать перезапуск logi c в yml и вызывать его, используя - include

Вместо этого используйте обработчики, https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html#handlers -running-operations-on-change

notify: <handler name> поможет в запуске обработчика.

Примечание: имя обработчика должно совпадать с именем задачи, которая будет запускаться из каталога обработчиков, или если вы определяете обработчики обычным образом. /handlers/tasks/main.yml

  - name: OS handler
    debug: msg='test'
    when: ansible_distribution == "RedHat"

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

Вместо ansible_distribution у вас может быть другая глобальная переменная

В противном случае используйте - include Сообщите мне, если это ответит на ваш вопрос

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