Ansible 中的循环检查

Looped checks in Ansible

例如,我有一个这样的列表:

vms:
  - name: "vm1"
    desc: "first"
    network:
      ip: "10.0.0.10"
      prefix: "16"
  - name: "vm2"
    desc: "second"
    network:
      ip: "10.0.0.11"
      prefix: "16"

我想在循环中使用 OpenNebula 创建 VM,并检查是否已经创建了 VM。我做了一个检查任务:

- name: Check if VM "{{ item.name }}" already created
  become_user: oneadmin
  ignore_errors: yes
  shell: onevm list --csv | grep "{{ item.name }}"
  register: created_vms
  with_items:
    - "{{ vms }}"

但我不知道如何使用循环 + 'when' 语句正确地执行 "Create VM" 任务。

感谢@Konstantin Suvorov 的评论! 这是我的案例的答案:

- name: Check if VMs already created
  become_user: oneadmin
  ignore_errors: yes
  shell: onevm list --csv | grep "{{ item.name }}"
  register: created_vms
  with_items: "{{ vms }}"

- name: Create VMs
  become_user: oneadmin
  command: onevm create --name "{{ item.1.name }}"
  when: item.0|failed
  with_together:
    - "{{ created_vms.results }}"
    - "{{ vms }}"