Ansible:如何循环命令并忽略返回码?

时间:2016-11-03 19:11:26

标签: ansible ansible-playbook

我正在尝试循环命令并等待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

1 个答案:

答案 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