目录
一. 实施处理程序
1. 处理程序
处理程序是响应由其他任务触发的通知的任务
1.1 只有在 template 任务通知已发生更改时才触发
1.2 ansible 把 notify 语句当作数组
- 写 playbook
1.3 使用处理程序注意
1.处理程序始终按照 play 的 handlers 部分指定的顺序运行,不按 notify 里的
2.处理程序通常在相关 play 中所有其他任务运行完后运行
3.处理程序名称存在于个 play 命名空间中(如果两个处理程序同名,只会运行一个)
4.如果多个任务通知处理程序,处理程序也只会运行一次
5.如果包含 notify 的语句任务没有报告 changed 结果,则处理程序不会获得通知
2. 处理任务失败
通常 playbook 遇到错误会中止执行,但是有时我们想要失败时也继续执行
2.1 忽略任务失败
关键字:ignore_errors
2.2 任务失败后强制执行处理程序
通常任务失败,play 会中止,那么收到 play 中之前任务通知的处理程序将不会运行,如果要运 行,需要使用关键字:
force_handlers:yes
2.3 指定任务失败条件
关键字:failed_when
2.4 指定任务何时报告"Changed"结果
关键字:changed_when
2.5 ansible 块和错误处理
三种关键字
block | 定义要运行的主要任务 |
---|---|
rescue | 定义要在 block 子句中定义的任务失败时运行的任务 |
always | 定义时中独立运行的任务 |
练习:
1. 故意制造错误
2. 添加忽略关键字
3. 使用 block、rescue、always 将任务分开
4. 再修改,将 http 的包改为正确
5. 控制’changed’条件
运行发现 check time 任务始终是 changed
因为任务没有更改受管主机,所以不应该每次都是 changed
6.修改文件