Ansible:在changed_when语句

时间:2017-01-02 13:35:35

标签: ansible

我正在使用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

1 个答案:

答案 0 :(得分:1)

你首先遇到了失败的任务。如果命令的返回代码不是零(在您的情况下为command),那么"rc": 1模块将报告失败,这就是为什么不考虑changed_when条件的原因

将以下内容添加到prevent failing

failed_when: false