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

Глобальные обработчики в Ansible

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

Я просто хочу один раз определить обработчик (скажем, «перезапустить httpd») и сделать его доступным для любой директивы «notify» где угодно.

Спасибо!

Вы можете определить своих обработчиков в своей игре, а не в ролях. Обработчики, определенные в игре, будут доступны для всех задач / ролей в этой игре.

Вы можете использовать импорт, если хотите, и в разделе обработчиков.

---
- hosts: all
  handlers:
  - import_tasks: global_handlers.yml
  tasks:
  - shell: echo "Hello World"
    notify: some thing from global_handlers

Обратите внимание, что вам нужно «статическое включение» (для https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html#handlers-running-operations-on-change), так import_tasks должен использоваться вместо include_tasks:

Вы не можете уведомить обработчик, который определен внутри включения. Что касается Ansible 2.1, это работает, однако включение должно быть статическим.