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


本文详细介绍Ansible中block的使用方法,如何通过block和rescue实现错误处理,包括fail模块的使用,自定义错误信息,以及failed_when和changed_when关键字的应用。
——Ansible(15)&spm=1001.2101.3001.5002&articleId=108313031&d=1&t=3&u=e146f60dce4d462daf72f5c3c24eeda2)
171

被折叠的 条评论
为什么被折叠?



