notify:
触发标识,含有notify的任务需要触发处理程序才能彻底完成。
handlers:
处理程序的标识,被notify调用的处理程序的执行位置。往往放在所有任务之后执行。
使用过程中,notify和handlers是通过名称匹配,所以要求notify和handlers任务名称,必须相同,才可调用。
处理程序的使用:
1、处理程序始终按照play的handlers部分指定的顺序运行,与notify中的顺序无关;
2、处理程序通常在相关play中所有其他任务运行完后运行 ;
3、处理程序名称存在于个play命名空间中(如果两个处理程序同名,只会运行一个);
4、如果多个任务通知(notify)处理程序,处理程序也只会运行一次 ;
5、如果包含notify的语句任务没有报告changed结果,则处理程序不会获得通知。
举例:
#多通知,多处理程序
1 ---
2 - name: template
3 hosts: webservera
4 tasks:
5 - name: copy file
6 template:
7 src: files/example.conf
8 dest: /etc/httpd/conf.d/example.conf
9 notify: ##多个通知名称
10 - restart apache
11 - restart mysql
12 handlers: ##处理程序任务
13 - name: restart apache ##名称必须匹配
14 service:
15 name: httpd
16 state: restarted
17 - name: restart mysql ##名称必须匹配
18 service:
19 name: mariadb
20 state: restarted