具有poll = 0的Ansible异步模块未完成任务

问题描述 投票:1回答:1

首先,我正在使用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.没有运气。

任何有关这方面的帮助将不胜感激。

asynchronous ansible
1个回答
1
投票

评论的回答:

您应该使用delegate_to来检查异步作业的状态,因为原始的async任务也已被委派。

© www.soinside.com 2019 - 2024. All rights reserved.