触发器的作用是主要当我们关注的事件发生变化的时候,我们所要进行的操作。
notify 这个action可用于再每个play的最后触发,这样可以避免有多次改变时每次都执行制定的操作。取而代之的就是当这些所有的变化发生完成后一次性执行制定的操作。
再notify中列出的操作成为handler,即notify调用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
调用的过程是:在所有的关注的任务中,只有执行完才会进行最后的调用,同一个服务只出发一次。在大型的处理的脚本中可以避免我们的逻辑问题而出现的错误。
执行结果:
[root@ansible yaml_test]# ansible-playbook reload.yml
网友评论