4.Ansible.handlers定义执行完成后需要调用的后续任务
重点:handlers是一个特殊的task,正常情况下不会被执行。什么时候会被执行,当有notify通知时,才会被触发执行。notify通知的描述名称,必须和handlers的name一致才能被触发。
通过playbook部署httpd
- hosts: test
tasks:
- name: install httpd server ##安装httpd
yum:
name: httpd
state: present
- name: configer httpd server ##配置httpd服务
copy:
src: /httpd.conf.j2
dest: /etc/httpd/conf/httpd.conf
notify: Restart httpd server ##如果ansible推送的文件与被控端文件不一致,则由notify通知handlers触发执行
##notify 后面的内容必须与handlers下的name:的内容一致,否则无法调用handlers的内容
- name: start httpd server ##启动httpd服务
systemd:
name: httpd
state: started
enabled: yes
handlers:
- name: Restart httpd server
systemd:
name: httpd
state: restarte
模块的大概执行流程
例如:
当我们把httpd.conf的端口从80 改成90
再次执行ansible-playbook httpd_server.yml的时候,会检测到与之前推送的配置文件有差别,就会调用notify去启用handlers
在浏览器中换成90端口,被控的Apache才能正常被访问