ansible基本上是在任务状态的基础上运行的:web
这些状态决定了是否须要在主机上执行进一步的任务、或者因为某些变化是否须要通知处理器。任务也可使用对以前的任务状态检查条件进行控制操做。shell
本章中,咱们探讨几种在决定任务状态时影响ansible的方式:dom
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参数就很是有用。不少程序在执行的时候能够有很详细的非零退出码,意味着不一样的事情;然而这些模块都会将非零的退出码认为是失败的。url