简单记录下Ansible入门基础知识notify和handlers。
notify
notify这个action可用于在每个play的最后被触发,这样可以避免多次有改变发生时每次都执行指定的操作,取而代之,仅在所有的变化发生完成后一次性地执行指定操作。
在notify中列出的操作称为handler,也即notify中调用handler中定义的操作。
---- name: test.yml just for test
hosts: testserver
vars:
region: ap-southeast-1
tasks:
- name: template configuration
file template: src=https://www.linuxidc.com/template.j2 dest=/etc/foo.conf
notify:
- restart memcached
- restart apache
handlers:
- name: restart memcached
service: name=memcached state=restarted
- name: restart apache
service: name=apache state=restarted
handlers
Handlers 也是一些 task 的列表,通过名字来引用,它们和一般的 task 并没有什么区别。
Handlers 是由通知者进行 notify, 如果没有被 notify,handlers 不会执行。
不管有多少个通知者进行了 notify,等到 play 中的所有 task 执行完成之后,handlers 也只会被执行一次。
Handlers 最佳的应用场景是用来重启服务,或者触发系统重启操作.除此以外很少用到了。
---- name: test.yml just for test
hosts: testserver
vars: region: ap-southeast-1
tasks:
- name: check memory free
template: src=https://www.linuxidc.com/template1.j2 dest=/etc/foo.conf
notify: restart apache
- name: check memory free
template: src=https://www.linuxidc.com/template2.j2 dest=/etc/okk.conf
notify: restart apache handlers:
- name: restart apache
service: name=apache state=restarted#//@Apache只会重启一次#//@handlers需要等到所有tasks完成后才执行
下面关于Ansible的文章您也可能喜欢,不妨参考下:
在 CentOS 7 中安装并使用自动化工具 Ansible