我正在尝试循环命令并等待stdout中的某个短语,但该任务将过早失败,因为如果命令无法连接,该命令将返回“1”。如何让它忽略返回代码?
- name: Wait for Fabric Creation to complete
action: shell /usr/local/jboss/jboss-fuse/bin/client container-list
register: result
until: result.stdout.find("success")
retries: 20
delay: 10
答案 0 :(得分:0)
命令失败并不是真正的问题(尽管任务结果将基于shell脚本的返回代码 - 可以使用failed_when
更改)。
真正的问题在于以下情况:
until: result.stdout.find("success")
如果找不到匹配项,则 find
返回-1
值,因此当stdout中没有success
字符串时,实际上会传递布尔检查。因此,until
中的条件在第一次运行时得到满足。
您需要将条件更改为:
- name: Wait for Fabric Creation to complete
action: shell /usr/local/jboss/jboss-fuse/bin/client container-list
register: result
until: result.stdout.find("success") != -1
retries: 20
delay: 10