觸發(fā)器的作用是主要當(dāng)我們關(guān)注的事件發(fā)生變化的時(shí)候迄本,我們所要進(jìn)行的操作硕淑。
notify 這個(gè)action可用于再每個(gè)play的最后觸發(fā),這樣可以避免有多次改變時(shí)每次都執(zhí)行制定的操作。取而代之的就是當(dāng)這些所有的變化發(fā)生完成后一次性執(zhí)行制定的操作置媳。
再notify中列出的操作成為handler于樟,即notify調(diào)用handler中定義的操作。
---
- hosts: cache
remote_user: root
tasks:
- lineinfile:
path: /etc/httpd/conf/httpd.conf
regexp: '^Listen '
insertafter: '^#listen '
line: 'Listen 8080'
notify:
- reload apache
- replace:
path: /etc/httpd/conf/httpd.conf
regexp: '^#(ServerName ).*'
replace: '\1localhost'
notify:
- reload apache
- copy:
src: /etc/ansible/index.html
dest: /var/www/html/
owner: apache
group: apache
mode: 0644
handlers:
- name:reload apache
service:
name: httpd
調(diào)用的過(guò)程是:在所有的關(guān)注的任務(wù)中拇囊,只有執(zhí)行完才會(huì)進(jìn)行最后的調(diào)用迂曲,同一個(gè)服務(wù)只出發(fā)一次。在大型的處理的腳本中可以避免我們的邏輯問(wèn)題而出現(xiàn)的錯(cuò)誤寥袭。
執(zhí)行結(jié)果:
[root@ansible yaml_test]# ansible-playbook reload.yml