ansible-block及playbook中的错误处理
- block将多个任务组成一个块
我们发现如果使用上述的判断方法加上task来指定动作,判断成功后我们只能执行一个动作,那么如果想要执行多个动作怎么办?
也许我们可以让它进行多次判断:
比如判断条件成立后我们要执行3个动作,就写3次判断,让它每次判断成功后执行一个动作
但这样明显很麻烦,而且也不专业,所以此时我们就需要block来帮助我们实现这个需求:
可以看到task1不在block中,也输出了,而block中的两个动作也执行了
- block结合rescue实现错误处理功能
上述写法是我们之前使用的普通写法,使用when判断错误,而block可以结合rescue来判断错误,无须使用when
rescue即如果block中的动作执行失败,则执行rescue中的内容
- block+rescue+always
- fail模块:手动报错
写法2:指定错误信息
---
- hosts: testB
remote_user: root
tasks:
- debug:
msg: "1"
- debug:
msg: "2"
- fail:
msg: "Interrupt running playbook"
- debug:
msg: "3"
- debug:
msg: "4"
-
fail模块:自定义错误
注意:这里的’error’必须带引号,即在使用判断时,条件中包含的字符串要带引号 -
不符合报错信息时,不会报错,会执行下面的动作
-
failed_when关键字:自定义错误
-
changed_when关键字:改变状态为changed
注意:changed_when关键字的作用是改变状态为changed。还记得handler模块吗?只有状态为changed的动作,才会执行对于handler模块中的内容。所以此关键字可以和handler模块在必要时结合使用 -
changed_when关键字:设置为false时,表示改变状态不为changed