江油网站建设制作策划哪家专业,网站平台建设的实训报告,专业教学资源库网站建设工作,微网站菜单handlers可以理解成另一种tasks#xff0c;handlers是另一种’任务列表’#xff0c;handlers中的任务会被tasks中的任务进行”调用”#xff0c;但是#xff0c;被”调用”并不意味着一定会执行#xff0c;只有当tasks中的任务”真正执行”以后#xff08;真正的进行实际…handlers可以理解成另一种taskshandlers是另一种’任务列表’handlers中的任务会被tasks中的任务进行”调用”但是被”调用”并不意味着一定会执行只有当tasks中的任务”真正执行”以后真正的进行实际操作造成了实际的改变handlers中被调用的任务才会执行如果tasks中的任务并没有做出任何实际的操作那么handlers中的任务即使被’调用’也并不会执行。
handler执行的顺序与handler在playbook中定义的顺序是相同的与”handler被notify”的顺序无关。
默认情况下所有task执行完毕后才会执行各个handler并不是执行完某个task后立即执行对应的handler如果你想要在执行完某些task以后立即执行对应的handler则需要使用meta模块。
meta任务是一种特殊的任务meta任务可以影响ansible的内部运行方式meta任务的参数值为flush_handlers”meta: flush_handlers”表示立即执行之前的task所对应handler。
如果想要每个task在实际操作后都立马执行对应handlers则可以在每个任务之后都添加一个meta任务并将其值设置为flush_handlers。 所以我们可以依靠meta任务让handler的使用变得更加灵活。
如果想要一次notify多个handler则需要借助另一个关键字它就是’listen’你可以把listen理解成”组名”我们可以把多个handler分成”组”当我们需要一次性notify多个handler时只要将多个handler分为”一组”使用相同的”组名”即可当notify对应的值为”组名”时”组”内的所有handler都会被notify
[rootserver4 ~]# cat mkdir3.yml
---
- hosts: testBremote_user: roottasks:- name: task1file: path/testdir/testfilestatetouchnotify: handler group1handlers:- name: handler1listen: handler group1file: path/testdir/ht1statetouch- name: handler2listen: handler group1file: path/testdir/ht2statetouch