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