Ansible使用基础之handlers触发器

在playbook的任务执行过程中,有些任务的状态每次都会发生变化,当需要根据变化做出响应,而不用更改后续任务时,handlers是一个不错的选择。

一、handlers有何作用?

handlers意为触发器,与notify搭配使用对某个子任务进行监听,当其状态发生变化时,执行定义的额外动作使用handlers,无需更改后续任务,便可增加额外的功能,playbook的功能扩展更为灵活。

二、实例

在前文Ansible使用基础之playbook模式的讲解中,以安装http服务器为例进行讲解。原playbook如下图所示:
原方案

现有额外需求如下。
需求: http安装完成后,现需将监听端口由默认的80,该为8080

  • 方案一
    在本地修改配置文件后,照旧使用copy模块传到任务主机,之后将后面的start httpd 任务改为 restart httpd
    在这里插入图片描述

  • 方案二
    使用handlers,在传送配置文件完成后,立即重启http服务。更改如下:
    使用handlers
    对比两种方案,可见,使用handlersplaybook能够进行更为灵活的扩展。

三、注意事项

  • notify后的名称需与handlers中定义的name一致
  • handlers与tasks同级