Ansible playbook中的handlers


执行task之后,服务器发生变化之后要执行的一些操作,比如我们修改了配置文件后,需要重启一下服务


vim /etc/ansible/handlers.yml

---

- name: handlers test

  hosts: client.wyp.com

  user: root

  tasks:

    - name: copy file

      copy: src=/tmp/1.txt dest=/tmp/2.txt  #服务端拷贝到客户端

      notify: test handlers  #指定当copy成功后,调用handlers执行后续命令。否则不执行

  handlers:

    - name: test handlers  #用来指定上面要调用的名称

      shell: echo "111111" >> /tmp/2.txt


执行命令:ansible-playbook handlers.yml

说明,只有copy模块真正执行后,才会去调用下面的handlers相关的操作。也就是说如果1.txt和2.txt内容是一样的,并不会去执行handlers里面的shell相关命令。 这种比较适合配置文件发生更改后,重启服务的操作。这个copy模块和rsync类似,如果对方机器上有这个文件,且内容一样,是不会拷贝的,比较智能。而scp不管内容是否一样,都会覆盖原文件的。


handlers  ['hndlz] 操作者;处理器; 处理程序

notify  [ntfa]通知; 布告