Check Mode (“Dry Run”)
New in version 1.1.
当以 —check
参数来运行 ansible-playbook 时,将不会对远程的系统作出任何更改.相对的,任何带有检测功能的模块(这几乎包含了所有的主要核心模块,但这不要求所有的模块都需支持.)只要支持 ‘检测模式’ 将会报告它们会做出什么改变而不是直接进行改变.其他不支持检测模式的模块将既不响应也不提出相应的报告.
检测模式只是一种模拟.如果你的playbook是以先前命令的执行结果作为条件的话,那它可能对你就没有什么大用处了.但是对于基于一次一节点的基础配置管理的使用情形来说是很有用.
Example:
- ansible-playbook foo.yml --check
在测试模式下运行一个任务.
New in version 1.3.
有时候你甚至会想在检测模式中执行一个任务.为了达到这样的效果,你需要在相应的任务上使用 always_run 子句.跟 when 子句一样,它的值是一个 Jinja2 表达式.在一个简单的例子中,布尔值也会表达为一个适当的 YAML 值.
Example:
- tasks:
- - name: this task is run even in check mode
- command: /something/to/run --even-in-check-mode
- 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 特性会产生大量的输出结果,所以它在一次检测一个主机时使用为佳,如:
- ansible-playbook foo.yml --check --diff --limit foo.example.com