2017-01-02 68 views
1

我使用with_items迭代器來執行命令:brew services stop {{ item }}Ansible:在changed_when語句中使用item(with_items)

要處理錯誤,我想使用changed_when並使用item值。

command: brew services stop {{ item }} 
    register: stop_services 
    changed_when: 
    - "'Error: Service `{{ item }}` is not started.' not in stop_services.stderr" 
    with_items: 
    - memcached 
    - kafka 

如果服務沒有啓動,我得到以下錯誤

failed: [127.0.0.1] (item=memcached) => {"changed": false, "cmd": ["brew", "services", "stop", "memcached"], "delta": "0:00:00.464519", "end": "2016-12-29 18:02:37.795973", "failed": true, "item": "memcached", "rc": 1, "start": "2016-12-29 18:02:37.331454", "stderr": "Error: Service memcached is not started.", "stdout": "", "stdout_lines": [], "warnings": []}

changed_when聲明被忽略。

是否可以將item注入changed_when聲明?

Ansible版本:2.2

回答

1

你必須首先一個失敗的任務。如果命令的返回碼不是零(在你的情況下爲"rc": 1),那麼command模塊將報告失敗,這就是爲什麼你的changed_when條件未被考慮。

以下內容添加到prevent failing

failed_when: false 
+0

你也可以使用'ignore_errors:yes',它會告訴你,如果事情失敗了,但會忽略它。 –

相關問題