具有poll = 0的Ansible异步模块未完成任务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了具有poll = 0的Ansible异步模块未完成任务相关的知识,希望对你有一定的参考价值。
首先,我正在使用Ansible 2.0.0
(我无法避免)。
我有这样的任务。在这里,我使用ping
命令将流量发送到目标计算机2分钟。此命令在远程计算机上运行。
- name: Ping destination VM from host VM.
shell: ping -n -i 0.004 100.1.1.1 -c 30000 | grep "received" | cut -d"," -f2 | xargs | cut -d" " -f1
delegate_to: 172.25.11.207
async: 250
poll: 0
register: ping_result
failed_when: ping_result.rc != 0
在此之后我还有2-3个其他任务。这不应该超过一分钟。
现在,经过这些任务,我想捕获ping_result
的输出。所以我检查上面任务的状态如下:
- name: Check ping status
async_status:
jid: "{{ ping_result.ansible_job_id }}"
register: job_result
until: job_result.finished
retries: 10
现在这失败了以下错误:
失败! => {“failed”:true,“msg”:“错误!条件检查'job_result.finished'失败。错误是:ERROR!错误,同时评估条件(job_result.finished):错误!'dict对象'没有属性'完成'“}
从错误中,看起来原始任务还没有完成。我甚至试图增加async
时间,直到5000.没有运气。
任何有关这方面的帮助将不胜感激。
答案
评论的回答:
您应该使用
delegate_to
来检查异步作业的状态,因为原始的async
任务也已被委派。
以上是关于具有poll = 0的Ansible异步模块未完成任务的主要内容,如果未能解决你的问题,请参考以下文章