可以将tasks和handlers分开成两个playbook,然后使用include_tasks将handlers任务导入tasks中,最后使用tags来指定需要运行的任务。
示例代码:
main.yml playbook:
- hosts: all
roles:
- testing
tags:
- example_tag
- include_tasks: handlers.yml
handlers.yml playbook:
- name: restart service
service:
name: httpd
state: restarted
listen: restart-httpd
- name: reload service
service:
name: nginx
state: reloaded
listen: reload-nginx
在main.yml playbook中指定需要运行的标签example_tag,并通过include_tasks将handlers.yml中的任务导入,最后使用listen指定响应的handler。这样就可以在指定标签时运行特定的handler,而不是所有handlers。