ansible系列(25)--ansible的notify和handlers
1. notify和handlers
Handlers 是一个触发器,同时是一个特殊的 tasks ,它无法直接运行,它需要被tasks 通知后才会运行。比如: httpd 服务配置文件发生变更,我们则可通过Notify 通知给指定的 handlers 触发器,然后执行相应重启服务的操作,如果配置文件不发生变更操作,则不会触发Handlers任务的执行;
handlers 注意事项
- 无论多少个
task通知了相同的handlers,handlers仅会在所有tasks结束后运行一次。 - 只有
task发生改变了才会通知handlers,没有改变则不会触发handlers。 - 不能使用
handlers替代tasks、因为handlers是一个特殊的tasks。
notify和handlers的示例如下:
[root@xuzhichao playbook]# cat install_httpd.yml
---
- hosts: 192.168.20.23
remote_user: root
tasks:
- name: Install Htttpd Server
yum:
name: httpd
state: present
- name: Configure Httpd Server
copy:
src: conf/httpd.conf.j2
dest: /etc/httpd/conf/httpd.conf
notify: Restart Httpd Server #调用名称为Restart Httpd Server的handlers
- name: Start Httpd Server
service:
name: httpd
state: started
enabled: yes
#如果配置文件发生变化会调用该handlers下面的对应名称的task
handlers:
- name: Restart Httpd Server
service:
name: httpd
state: restarted
只有当我们修改配置文件才会触发 handlers。

浙公网安备 33010602011771号