[ansible]handlers之关于触发事件

触发器的作用是主要当我们关注的事件发生变化的时候,我们所要进行的操作。

notify 这个action可用于再每个play的最后触发,这样可以避免有多次改变时每次都执行制定的操作。取而代之的就是当这些所有的变化发生完成后一次性执行制定的操作。

再notify中列出的操作成为handler,即notify调用handler中定义的操作。

---
- hosts: cache
  remote_user: root
  tasks:
    - lineinfile:
        path: /etc/httpd/conf/httpd.conf
        regexp: '^Listen '
        insertafter: '^#listen '
        line: 'Listen 8080'
      notify: 
          - reload apache
    - replace:
        path: /etc/httpd/conf/httpd.conf
        regexp: '^#(ServerName ).*'
        replace: '\1localhost'
      notify:
        - reload apache
    - copy:
        src: /etc/ansible/index.html
        dest: /var/www/html/
        owner: apache
        group: apache
        mode: 0644
  handlers:
   - name:reload apache
     service:
        name: httpd

调用的过程是:在所有的关注的任务中,只有执行完才会进行最后的调用,同一个服务只出发一次。在大型的处理的脚本中可以避免我们的逻辑问题而出现的错误。
执行结果:

[root@ansible yaml_test]# ansible-playbook reload.yml 

你可能感兴趣的:([ansible]handlers之关于触发事件)