【发布时间】:2018-11-19 11:59:31
【问题描述】:
我有一个简单的 shell 任务,它是 feed with_items。我只想在运行实际执行某些操作时才具有“更改”状态。因此,为此我必须解析输出并寻找«Done»。
问题是在with_items 生成结果列表的同时使用register。而且我找不到访问当前循环迭代的stdout 的方法。
---
- name: Test to set changed status only on when output match with 'Done'
hosts: my-host-01
gather_facts: no
tasks:
- name: Task doing stuff
shell: |
echo {{ item }}
register: do_stuff
with_items:
- "Doing... Done!"
- "Nothing to do"
#changed_when: do_stuff.results[{{ item.id }}].stdout.find('Done')
- name: Print 'do_stuff' var to debug
debug:
var: do_stuff
- name: Try to access to the desired stdout
debug:
var: do_stuff.results[0].stdout
我想要的预期结果是:
TASK [Task doing stuff]
*************************************************************************
changed: [cnode02] => (item=Doing... Done!)
Ok: [cnode02] => (item=Nothing to do)
【问题讨论】:
-
以下answer 对我没有帮助,因为它在下一个任务中处理它,而更新我假设的任务状态为时已晚。
-
这也是在 2 个任务中完成的。它不会帮助我获得初始任务的正确状态。