Возможно ли иметь в 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, это работает, однако включение должно быть статическим.