這次介紹下handlers的用法
當我們要修改某些配置文件的時候,有的需要配置重載或者重新啓動服務,比如修改nginx的 listen 80;修改爲listen 8080;需要重載nginx。
- hosts: docker
remote_user: root
vars:
epic: true
tasks:- name: 修改nginx.conf指定字段
lineinfile:
dest=/data/sh/nginx.conf
regexp="listen 80"
line="listen 8081;"
backrefs=yes
backup=yes
tags: hanye3
notify:
restart nginx
handlers:- name: restart nginx
service: name = nginx state=reloaded enabled=yes
上述表示爲僅僅修改 listen 80爲listen 8081,然後重載nginx
多任務調用不通的handlers實現:
- name: restart nginx
- name: 修改nginx.conf指定字段
meta任務的參數值爲flush_handlers,"meta: flush_handlers"表示立即執行之前的task所對應handler,什麼意思呢?意思就是,在當前meta任務之前,一共有兩個任務,task1與task2,它們都有對應的handler,當執行完task1與task2以後,立即執行對應的handler,而不是像默認情況那樣在所有任務都執行完畢以後才能執行各個handler
- hosts: docker
remote_user: root
vars:
epic: true
tasks:
- name: gouuradd erp
group: name=erp gid=1008
notify:
useradd erp
- meta: flush_handlers
- name: 修改nginx.conf指定字段
lineinfile:
dest=/data/sh/nginx.conf
regexp="listen 9080"
line="listen 8081\;"
backrefs=yes
backup=yes
tags: hanye3
notify:
restart nginx
handlers:
- name: restart nginx
service: name=nginx state=restarted
- name: useradd erp
user: name=erp uid=1008 group=erp password="$6$O9KDopiuPgvkrb4z$ee7/lfljSe79zQLIvDROsFM23hAJRRvVc.JoBWPGW/erp shell=/bin/bash"
調用多個handlers
當我們想要一個task調用多個handler的時候,第一想到的應該是一個handler可以寫多個name來實現,但這是行不通的,一個handler只能定義一個handler name,如果想實現調用多個handler,只需要把多個分爲一組(listen)
- name: groupadd erp2
group: name=erp2 gid=3008
notify:
data dir- name: copy nginx.conf
copy: src=/usr/local/nginx/conf/nginx.conf dest=/data/sh/nginx.conf - name: 修改nginx.conf指定字段
lineinfile:
dest=/data/sh/nginx.conf
regexp="listen 9080"
line="listen 8081\;"
backrefs=yes
backup=yes
tags: hanye3
notify:
restart nginx
handlers: - name: restart nginx
service: name=nginx state=restarted - name: useradd erp
user: name=erp uid=1008 group=erp password="$6$O9KDopiuPgvkrb4z$ee7/lfljSe79zQLIvDROsFM23hAJRRvVc.JoBWPGW3WbeHBQVG.IFcg1r8RppAIZ8naxckFGvOX2CIiwY6hEw0" home=/home/erp shell=/bin/bash"" - name: soft dir
listen: data dir
file: path=/data/backup state=directory mode=644 - name: home dir
listen: data dir
file: path=/data/homeerp state=directory mode=644
- name: copy nginx.conf