Возможно ли иметь в роли «пост-задачи»? Т.е. задачи, определенные в роли, которые будут выполняться в конце пьесы?
Например, у меня есть common
роль, от которой зависит большинство других ролей. common
Роль предоставляет некоторые базовые вещи, чтобы избежать повторений, например, настройки конфигурации yum и т. д.
Я заметил, чтов книгах естьpost_tasks
Мне было интересно, можно ли определять почтовые задачи в самих ролях?
Обновлять: ЦитируяДокументация Ansible:
Обработчики: выполнение операций по изменению
...
Эти действия «уведомления» запускаются в конце каждого блока задач в плейбуке и будут запущены только один раз, даже если уведомления получены от нескольких разных задач.
...
Роли описаны далее. Стоит отметить, что обработчики автоматически обрабатываются между разделами 'pre_tasks', 'roles', '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
(Поскольку никто не дал ответа, я не могу его принять, но мне показалось неправильным отвечать на свой собственный вопрос, используя советы из комментариев...)
решение1
Такое поведение вызвано ошибкой в Ansible 1.9.x, которая в настоящее время отслеживается здесь:https://github.com/ansible/ansible/issues/12575