Возможно ли иметь в роли «пост-задачи»? т.е. задачи, определенные в роли, которая будет выполняться в конце игры?
Например, у меня есть common
роль, от которой зависит большинство других ролей. В common
role предоставляет некоторые базовые вещи, позволяющие избежать повторения, такие как настройки yum config и т. д.
Я замечаю это playbooks есть post_tasks
. Мне было интересно, можно ли определять задачи публикации в самих ролях?
Обновить: Цитируя Ansible документация:
Обработчики: выполнение операций при изменении
...
Эти «уведомляющие» действия запускаются в конце каждого блока задач в playbook, и будут запускаться только один раз, даже если они были уведомлены несколькими разными задачами.
...
Роли описаны позже. Стоит отметить, что обработчики автоматически обрабатываются между разделами «pre_tasks», «role», «tasks» и «post_tasks».
...
Очевидно, что эта часть документации либо вводит в заблуждение, либо ложно (= в ней есть ошибка). Похоже, что обработчики уволены в конце каждой игры, между tasks
и post_tasks
, как показывает следующий простой тест:
- name: Handlers test
hosts: all
gather_facts: no
roles:
- some-role
# some-role depends on common
tasks:
- name: This a task
shell: /bin/true
post_tasks:
- name: This is a post task
shell: /bin/true
И общая роль:
# tasks/main.yml
- name: Registering handler
shell: /bin/true
notify: this is a handler
#handlers/main.yml
- name: this is a handler
shell: /bin/true
(Поскольку никто не дал ответа, я не могу его принять, но я не чувствовал себя правильным, отвечая на свой вопрос советами из комментариев ...)
Такое поведение вызвано ошибкой в Ansible 1.9.x, в настоящее время она отслеживается здесь: https://github.com/ansible/ansible/issues/12575