什么是触发器
1 2 |
handler用来执行某些条件下的任务,比如当配置文件发生变化的时候,通过notify触发handler去重启服务。 在saltstack中也有类似的触发器,写法相对Ansible简单,只需要watch,配置文件即可 |
配置触发器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
[root@m01 ~]# cat handler.yml - hosts: web_group tasks: - name: Install Http Server yum: name: httpd state: present - name: config httpd server copy: src: ./httpd.conf dest: /etc/httpd/conf notify: Restart Httpd Server - name: start httpd server service: name:httpd state: started enabled: yes handlers: - name: Restart Httpd Server systemd: name: httpd state: restarted |
注意事项
1 2 3 4 5 6 7 8 9 |
1.无论多少个task通知了相同的handlers,handlers仅会在所有tasks结束后运行一次。 2.Handlers只有在其所在的任务被执行时,才会被运行;如果一个任务中定义了notify调用Handlers,但是由于条件判断等原因,该任务未被执行,那么Handlers同样不会被执行。 3.Handlers只会在每一个play的末尾运行一次;如果想在一个playbook中间运行Handlers,则需要使用meta模块来实现。例如: -meta: flush_handlers。 4.如果一个play在运行到调用Handlers的语句之前失败了,那么这个Handlers将不会被执行。我们可以使用meta模块的--force-handlers选项来强制执行Handlers,即使Handlers所在的play中途运行失败也能执行。 5.不能使用handlers替代tasks |