2017-01-02 66 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',它会告诉你,如果事情失败了,但会忽略它。 –

相关问题