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
。