跳到主要内容

ansible任务控制-handlers

handlers作用

  • handlers用于notify监控发生变更后的动作触发,例如当某一个服务配置文件发生变更时重启服务

handlers流程

  • 1.配置notify监控,例如监控nginx的配置文件

  • 2.发送通知到handlers

  • 3.handlers触发动作

示例:当nginx配置文件发生变更时重启服务

编辑yml文件

提示

notify后的内容可以任意,但是handlers后的name下的内容必须与notify后定义的名称一致

handlers会在所有任务正确执行完成后执行,只会执行一次,并且只有当tasks改变后才会触发handlers

cat > task_handlers.yml < EOF
- hosts: devops02
tasks:
- name: copy nginx conf
copy:
src: ./file/nginx.conf
dest: /etc/nginx
notify: restart nginx

handlers:
- name: restart nginx
service:
name: nginx
state: restarted
EOF

执行yml文件

$ ansible-playbook task_handlers.yml 

PLAY [devops02] ****************************************************************************************************************************************

TASK [Gathering Facts] *********************************************************************************************************************************
ok: [devops02]

TASK [copy nginx conf] *********************************************************************************************************************************
changed: [devops02]

RUNNING HANDLER [restart nginx] ************************************************************************************************************************
changed: [devops02]

PLAY RECAP *********************************************************************************************************************************************
devops02 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0