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

Ansible:如何循环命令并忽略返回代码?,ansible,ansible-playbook,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:

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

命令失败并不是真正的问题(尽管任务结果将基于shell脚本的返回代码-当失败时,这可以通过
failed\u进行更改)

真正的问题在于以下情况本身:

until: result.stdout.find("success")
find
如果未找到匹配项,则返回
-1
值,因此当标准输出中没有
success
字符串时,布尔检查实际上通过。
中的条件,直到在第一次运行时满足


您需要将条件更改为:

- 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

命令失败并不是真正的问题(尽管任务结果将基于shell脚本的返回代码-当
失败时,这可以通过
failed\u进行更改)

真正的问题在于以下情况本身:

until: result.stdout.find("success")
find
如果未找到匹配项,则返回
-1
值,因此当标准输出中没有
success
字符串时,布尔检查实际上通过。
中的条件,直到在第一次运行时满足


您需要将条件更改为:

- 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

返回码来自标准输出还是标准输出?当结果没有连接时,你能告诉我结果的内容吗?@Shasha99我不知道你在问什么。这和stdout和stderr都没有关系。。所以你说的是result.rc。我有一些不同的想法。返回码是来自stdout还是stderr?当结果没有连接时,你能告诉我结果的内容吗?@Shasha99我不知道你在问什么。这和stdout和stderr都没有关系。。所以你说的是result.rc。我有一些不同的想法。太棒了!非常感谢。令人惊叹的!非常感谢。