Назад | Перейти на главную страницу

Задачи публикации ролей Ansible

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

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