例如,我有一个这样的列表:
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 }}"
但我不知道如何使用loop +'when'语句正确地创建“创建VM”任务。
答案 0 :(得分:0)
感谢@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 }}"