ansible自动化运维工具(5)

本文详细介绍了Ansible的处理程序、文件操作、Jinja2模板和大规模项目管理。内容涵盖处理程序的触发条件、任务失败处理、文件模块如file和blockinfile的使用,以及Jinja2模板的构建和过滤器应用。此外,还讨论了动态清单、并行执行、滚动更新和模块化 playbook 设计等高级话题。
摘要由CSDN通过智能技术生成

一. 实施处理程序

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.修改文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值