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