Ansible:如何循环命令并忽略 return 代码?

Ansible: How to loop a command and ignore the return code?

我正在尝试循环命令并等待 stdout 中的某个短语,但该任务将过早失败,因为如果无法连接,该命令将 return“1”。我怎样才能让它忽略 return 代码?

- 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

命令失败并不是真正的问题(虽然任务结果将基于 shell 脚本的 return 代码 - 这可以用 failed_when 改变) .

真正的问题在于以下条件本身:

until: result.stdout.find("success")

find returns -1 值,如果没有找到匹配项,那么当标准输出中没有 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