是否有可能在 Ansible 中拥有真正的全局处理程序,以便我可以从任何剧本的任何角色的任何任务“通知”处理程序?并且没有明确导入。
我只想定义一个处理程序(比如“重新启动 httpd”),并让它可用于任何“通知”指令的任何地方。
谢谢!
您可以在游戏中而不是角色中定义处理程序。戏剧中定义的处理程序可用于该戏剧下的所有任务/角色。
如果您也想在处理程序部分中使用导入,则可以使用导入。
---
- hosts: all
handlers:
- import_tasks: global_handlers.yml
tasks:
- shell: echo "Hello World"
notify: some thing from global_handlers
Run Code Online (Sandbox Code Playgroud)
请注意,您需要一个“静态包含”(根据 https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html#handlers-running-operations-on-change),因此import_tasks
必须使用而不是include_tasks
:
您无法通知包含内部定义的处理程序。从 Ansible 2.1 开始,这确实有效,但包含必须是静态的。
归档时间: |
|
查看次数: |
4215 次 |
最近记录: |