ansible- handlers用法
清单配置:
cat /etc/ansible/hosts
[test]
18.18.23.102 ansible_become_pass='123.cn'配置文件配置:
cat /etc/ansible/ansible.cfg
[defaults]
inventory = /etc/ansible/hostshandlers介绍和用法
handlers是另一种'任务列表',handlers中的任务会被tasks中的任务进行调用。当tasks中的任务真正执行后,handlers中被调用的任务才会执行。如果tasks中的任务并没有做出真正的操作,handlers中的任务即使被调用,也并不会被执行。handlers可以有多个任务,并被tasks中不同的任务notify.
handlers和tasks是对齐的。通过notify关键字通知handlers中的任务。
所有task执行完毕后,才会执行各个handler.
如果在执行完某些task以后立即执行对应的handler,需要使用meta模块。
meta任务是一种特殊任务,meta任务可影响ansible的内部运行方式。meta:flush_handlers表示立即执行之前的task所对应handler.
cat meta.yaml
---
- hosts: test
remote_user: yuan
tasks:
- name: task1
file:
path: /php7/osspull
state: touch
notify: handler1
- name: task2
file:
path: /php7/ossupload
state: touch
notify: handler2
- meta: flush_handlers
- name: task3
file:
path: /python/smtposs
state: touch
notify: handler3
handlers:
- name: handler1
file:
path: /php7/video.txt
state: touch
- name: handler2
file:
path: /php7/video2.txt
state: touch
- name: handler3
file:
path: /python/smtpemail.txt
state: touch
在每个task执行后立马执行对应handlers,可以在每个任务后都添加一个meta任务,并将其值设置为flush_handlers.
如果一次notify多个handler,需要借助关键字: listen.
可将listen理解为组名。 一次notify多个handler时,把多个handler分为"一组",使用相同组名即可。
cat listen.yaml
---
- hosts: test
remote_user: yuan
tasks:
- name: taskone
file:
path: /php7/wordpress.txt
state: touch
notify: handler group 1
handlers:
- name: handler1
listen: handler group 1
file:
path: /php7/wp1
state: touch
- name: handler2
listen: handler group 1
file:
path: /php7/wp2
state: touch
文章转载自运维开发圈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




