Ansible Playbook - 03
Handlers
正如我们所提到的,模块应该是幂等的,并且可以在它们对远程系统进行更改时进行中继。Playbook 认识到这一点,并有一个基本的事件系统,可以用来响应变化。
这些 notify
动作在一个 playbook 中每个任务块的末尾触发,即使由多个不同的任务通知,也只会触发一次。
例如,多个资源可能表明 apache 需要重新启动,因为它们更改了配置文件,但是 apache 只会被触发一次,以避免不必要的重新启动
这里有例子
上边例子里 notify
列出的任务被称为 handlers
Handlers 其实是一个任务列表,实际上与常规任务没有什么不同,它们由全局惟一名称引用,并由 notify 程序通知。如果没有通知处理程序,它将不会运行。不管有多少任务通知一个处理程序,它都只运行一次,即在一个特定的 play 中完成所有任务之后
这里有一个 handlers 的示例
在 Ansible 2.2 之后,handlers 可以使用 listen
参数被监听,
这种用法使触发多个处理程序变得容易得多。它还将处理程序与其名称解耦,使处理程序更容易在 Playbook 和 Role 之间共享 (特别是在使用来自共享源(如 Galaxy)的第三方角色时)。
在下一节的时候会介绍 Role ,现在有如下内容需要注意:
在 pre_tasks、tasks 和 post_tasks 部分中通知的处理程序将在通知它们的部分的末尾自动刷新;
角色部分中通知的处理程序将在任务部分的末尾自动刷新,但在任何任务处理程序之前。
执行一个 Playbook
现在已经学会了 Playbook 的语法,那么如何执行一个 Playbook,非常简单,使用下列命令就可以并行的执行。
版权声明: 本文为 InfoQ 作者【耳东】的原创文章。
原文链接:【http://xie.infoq.cn/article/920857899d4454710daa42568】。未经作者许可,禁止转载。
评论