Ansible:检查 async_status 多个作业有无结果

Ansible: check async_status on multiple jobs with and without results

我有三个用于下载各种资源的 Ansible 任务。其中两个是使用循环创建的,因此,它们具有键 results 和 return 个对象列表,一个 return 只是一个具有键 ansible_job_id 的对象。

如何在一个检查作业状态任务中遍历所有这些?我试过 with_nested 但出现错误

'list object' has no attribute 'ansible_job_id'

- name: Check download job statuses
  async_status:
    jid: "{{ item.ansible_job_id }}"
  register: job_result
  until: job_result.finished
  retries: 12
  delay: 10
  with_nested:
    - list1.results
    - list2.results
    - object

您只需创建一个列表,其中包含具有 ansible_job_id 键的所有元素。

在 Jinja 中,列表的串联就像添加它们一样简单 — 使用 + 运算符。
所以,你的任务最终是:

- name: Check download job statuses
  async_status:
    jid: "{{ item.ansible_job_id }}"
  register: job_result
  until: job_result.finished
  retries: 12
  delay: 10
  loop: "{{ list1.results + list2.results + [object] }}"