Ansible:如何循环命令并忽略返回代码?
我正在尝试循环一个命令并等待stdout中的某个短语,但任务将过早失败,因为如果无法连接,该命令将返回“1”。如何使其忽略返回代码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:
- 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。我有一些不同的想法。太棒了!非常感谢。令人惊叹的!非常感谢。