Обработчики: выполнение операций по изменению

Обработчики: выполнение операций по изменению

Возможно ли иметь в роли «пост-задачи»? Т.е. задачи, определенные в роли, которые будут выполняться в конце пьесы?

Например, у меня есть 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

Связанный контент