Check Mode (“Dry Run”)

New in version 1.1.

当以 —check 参数来运行 ansible-playbook 时,将不会对远程的系统作出任何更改.相对的,任何带有检测功能的模块(这几乎包含了所有的主要核心模块,但这不要求所有的模块都需支持.)只要支持 ‘检测模式’ 将会报告它们会做出什么改变而不是直接进行改变.其他不支持检测模式的模块将既不响应也不提出相应的报告.

检测模式只是一种模拟.如果你的playbook是以先前命令的执行结果作为条件的话,那它可能对你就没有什么大用处了.但是对于基于一次一节点的基础配置管理的使用情形来说是很有用.

Example:

  1. ansible-playbook foo.yml --check

在测试模式下运行一个任务.

New in version 1.3.

有时候你甚至会想在检测模式中执行一个任务.为了达到这样的效果,你需要在相应的任务上使用 always_run 子句.跟 when 子句一样,它的值是一个 Jinja2 表达式.在一个简单的例子中,布尔值也会表达为一个适当的 YAML 值.

Example:

  1. tasks:
  2.  
  3. - name: this task is run even in check mode
  4. command: /something/to/run --even-in-check-mode
  5. always_run: yes

友情提示,带有 when 子句的任务会返回false,该任务将会被跳过,即使它还被添加了会返回true的 always_run 子句.

Showing Differences with —diff

New in version 1.1: 对 ansible-playbook 来说 —diff 选项与 —check (详情参下)配合使用效果奇佳,不过它也可以单独使用.当提供了相应的标识后,当远程系统上任何模板文件的变化时,ansible-playbook CLI 将会报告文件上任何文本的变化(或者,如果使用了 —check 参数,将报告会发生的变化.).因为 diff 特性会产生大量的输出结果,所以它在一次检测一个主机时使用为佳,如:

  1. ansible-playbook foo.yml --check --diff --limit foo.example.com