控制任务条件
ansible基本上是在任务状态的基础上运行的:
- Ok
- Changed
- Failed
- Skipped
这些状态决定了是否需要在主机上执行进一步的任务、或者由于某些变化是否需要通知处理器。任务也可以使用对之前的任务状态检查条件进行控制操作。
本章中,我们探讨几种在决定任务状态时影响ansible的方式:
- 定义失败的控制。
- 定义状态改变的控制。
定义失败
ansible的很多模块对于指定错误都有一个选项可做。错误条件高度依赖某个模块,那么这个模块就会尝试完成它。当模块返回错误,那么对应的主机会从可用主机列表移除,防止进一步的任务或处理器在那台机器上执行。此外,ansible-playbook函数或ansible执行会以非零退出,指示操作失败。 然而,我们不会限制错误发生时模块的选择。我们可以选择忽略错误或者重新定义失败条件。
忽略错误
任务的ignore_errors参数用于忽略错误。 这个参数是一个布尔值,意思是ansible能理解为true的东西。
- name: broken website
uri:
url: http://notahost.nodomain
ignore_errors: true
重新定义错误条件
ignore_errors参数是一个呆板的锤子。任务使用的模块产生错误就会被忽略掉。另外,乍一看,输出仍然像是一个错误,并且可能对操作员造成困惑,它们会尝试找到出错的原因。一个更微妙的工具就是参数failed_when。这个参数就更加像一个精细手术刀,允许剧本作者对某个任务非常具体的指定构成任务的错误是什么。这个参数执行一个产生布尔结果的测试,非常类似于when参数。如果在布尔的结果是事实,那么任务就被认为是失败的。否则任务依然被认为是成功的。
在与命令或shell模块结合使用、以及在注册执行结果的时候,failed_when参数就非常有用。很多程序在执行的时候可以有很详细的非零退出码,意味着不同的事情;然而这些模块都会将非零的退出码认为是失败的。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。