Ansible-Handlers与Notify

1、handlers、notify作用

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

2、示例1-变更服务配置触发重启

2.1、编写playbook【使用 Ansible 的 playbook 部署 httpd 服务]

cat << 'CAT_END' > loop-file.yaml
- hosts: httpd
  remote_user: root
  vars:
    http_port: 8080
  tasks:
    - name: install httpd server
      yum: name=httpd state=present
    - name: configure httpd server
      template:
        src: ./httpd.conf.j2
        dest: /etc/httpd/conf/httpd.conf
      notify: # 调用名称为Restart Httpd Server的handlers(可以写多个)
        - restart httpd server
    - name: start httpd server
      systemd: name=httpd state=started enabled=yes
  handlers: # 如果配置文件发生变化会调用该handlers下面的对应名称的task
    - name: restart httpd server
      systemd: name=httpd state=restarted
CAT_END

2.2、准备模板配置文件

scp root@192.168.10.17:/etc/httpd/conf/httpd.conf httpd.conf.j2
sed -i '/^Listen/c Listen {{http_port}}' httpd.conf.j2

2.3、执行playbook

]# ansible-playbook loop-file.yaml 

PLAY [httpd] *************************************************************************************************************************************************

TASK [Gathering Facts] ***************************************************************************************************************************************
ok: [192.168.10.17]
ok: [192.168.10.18]

TASK [install httpd server] **********************************************************************************************************************************
ok: [192.168.10.18]
ok: [192.168.10.17]

TASK [configure httpd server] ********************************************************************************************************************************
ok: [192.168.10.18]
ok: [192.168.10.17]

TASK [start httpd server] ************************************************************************************************************************************
ok: [192.168.10.18]
ok: [192.168.10.17]

PLAY RECAP ***************************************************************************************************************************************************
192.168.10.17              : ok=4    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
192.168.10.18              : ok=4    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 

3、Handlers注意事项与说明

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

 

posted @ 2023-05-13 17:08  小粉优化大师  阅读(197)  评论(0编辑  收藏  举报