我正在使用with_items
迭代器来执行命令:brew services stop {{ item }}
。
要处理错误,我想使用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
如果服务未启动,我会收到以下错误
失败:[127.0.0.1](item = memcached)=> {“已更改”:false,“cmd”:[“brew”,“services”,“stop”,“memcached”],“delta”:“0:00:00.464519”,“end”:“2016-12- 29 18:02:37.795973“,”失败“:真实,”项目“:”memcached“,”rc“:1,”开始“:”2016-12-29 18:02:37.331454“,”stderr“:”错误:服务
memcached
未启动。“,”stdout“:”“,”stdout_lines“:[],”警告“:[]}
但changed_when
语句被忽略。
是否可以将item
注入changed_when
声明?
Ansible版本:2.2
答案 0 :(得分:1)
你首先遇到了失败的任务。如果命令的返回代码不是零(在您的情况下为command
),那么"rc": 1
模块将报告失败,这就是为什么不考虑changed_when
条件的原因
将以下内容添加到prevent failing:
failed_when: false