11 Playbook中handler的使用
由于Ansible幂等性的特性,有时前一个task发生了变化,后续的task无变化并不会重新执行,
但后续的task却可能受前一个task变化而影响。使用hanlder和notify即可解决此问题,handler
用于当关注的资源发生变化时,才会采取一定的操作。在notify中列出的操作称为handler,
也即notify中调用handler中定义的操作
示例:
vim http.yml
—
– host: websrvs
remote_user: root
tasks:
– name: install httpd package
yum: name=httpd
– name: copy conf file
copy: src=files/httpd.conf dest=/etc/httpd/conf/ backup=yes
– name: start service
service: name=httpd state=startd enable=yes
vim /files/httpd.conf
Listen 8080
ansible-playbook http.yml
此时无法重启服务,端口仍为80
vim http.yml
—
– host: websrvs
remote_user: root
tasks:
– name: install httpd package
yum: name=httpd
– name: copy conf file
copy: src=files/httpd.conf dest=/etc/httpd/conf/ backup=yes
notify: restart service
– name: start service
service: name=httpd state=startd enable=yes
handlers:
– name: restart service
service: name=httpd state=restarted
由于httpd.conf发生了变化,触发了notify,执行相应的handler操作,httpd服务重启后
监听端口变为8080
学员评价