ansible系列(25)--ansible的notify和handlers

1. notify和handlers

Handlers 是一个触发器,同时是一个特殊的 tasks ,它无法直接运行,它需要被tasks 通知后才会运行。比如: httpd 服务配置文件发生变更,我们则可通过Notify 通知给指定的 handlers 触发器,然后执行相应重启服务的操作,如果配置文件不发生变更操作,则不会触发Handlers任务的执行;

handlers 注意事项

  • 无论多少个 task 通知了相同的 handlers handlers 仅会在所有tasks 结束后运行一次。
  • 只有 task 发生改变了才会通知 handlers ,没有改变则不会触发handlers
  • 不能使用 handlers 替代 tasks 、因为 handlers 是一个特殊的 tasks

notifyhandlers的示例如下:

[root@xuzhichao playbook]# cat install_httpd.yml 
---
- hosts: 192.168.20.23
  remote_user: root

  tasks:
    - name: Install Htttpd Server
      yum:
        name: httpd
        state: present

    - name: Configure Httpd Server
      copy: 
        src: conf/httpd.conf.j2
        dest: /etc/httpd/conf/httpd.conf
      notify: Restart Httpd Server    #调用名称为Restart Httpd Server的handlers

    - name: Start Httpd Server
      service:
        name: httpd
        state: started
        enabled: yes

  #如果配置文件发生变化会调用该handlers下面的对应名称的task
  handlers:    
    - name: Restart Httpd Server
      service:
        name: httpd
        state: restarted

只有当我们修改配置文件才会触发 handlers

posted @ 2021-08-18 17:31  向往自由的独行者  阅读(850)  评论(0编辑  收藏  举报