第四章: 控制任务条件

控制任务条件

ansible基本上是在任务状态的基础上运行的:web

  • Ok
  • Changed
  • Failed
  • Skipped

这些状态决定了是否须要在主机上执行进一步的任务、或者因为某些变化是否须要通知处理器。任务也可使用对以前的任务状态检查条件进行控制操做。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

定义状态改变

命令家族的特殊处理

抑制变化(Suppressing a change)

总结

目录

相关文章
相关标签/搜索