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