最新消息:

Ansible入门notify和handlers

Linux ipcpu 7184浏览

notify

notify这个action可用于在每个play的最后被触发,这样可以避免多次有改变发生时每次都执行指定的操作,取而代之,仅在所有的变化发生完成后一次性地执行指定操作。

在notify中列出的操作称为handler,也即notify中调用handler中定义的操作。

  1. ---
  2. - name: test.yml just for test
  3. hosts: testserver
  4. vars:
  5. region: ap-southeast-1
  6. tasks:
  7. - name: template configuration file
  8. template: src=template.j2 dest=/etc/foo.conf
  9. notify:
  10. - restart memcached
  11. - restart apache
  12. handlers:
  13. - name: restart memcached
  14. service: name=memcached state=restarted
  15. - name: restart apache
  16. service: name=apache state=restarted

handlers

Handlers 也是一些 task 的列表,通过名字来引用,它们和一般的 task 并没有什么区别。

Handlers 是由通知者进行 notify, 如果没有被 notify,handlers 不会执行。

不管有多少个通知者进行了 notify,等到 play 中的所有 task 执行完成之后,handlers 也只会被执行一次。

Handlers 最佳的应用场景是用来重启服务,或者触发系统重启操作.除此以外很少用到了。

  1. ---
  2. - name: test.yml just for test
  3. hosts: testserver
  4. vars:
  5. region: ap-southeast-1
  6. tasks:
  7. - name: check memory free
  8. template: src=template1.j2 dest=/etc/foo.conf
  9. notify: restart apache
  10. - name: check memory free
  11. template: src=template2.j2 dest=/etc/okk.conf
  12. notify: restart apache
  13. handlers:
  14. - name: restart apache
  15. service: name=apache state=restarted
  16. #//@Apache只会重启一次
  17. #//@handlers需要等到所有tasks完成后才执行

参考链接

http://ansible-tran.readthedocs.org/en/latest/docs/playbooks_intro.html
http://www.21ops.com/ops/automate-ops/26711.html

转载请注明:IPCPU-网络之路 » Ansible入门notify和handlers