--- - name: Ensure remote images are downloaded get_url: url: "{{ item }}" dest: "{{ libvirt_vm_image_cache_path }}/{{ item | basename }}" with_items: "{{ libvirt_vm_volumes | selectattr('image', 'defined') | map(attribute='image') | list }}" when: "{{ 'http' in item }}" - name: Ensure local images are copied copy: src: "{{ item }}" dest: "{{ libvirt_vm_image_cache_path }}/{{ item | basename }}" with_items: "{{ libvirt_vm_volumes | selectattr('image', 'defined') | map(attribute='image') | list }}" when: "{{ 'http' not in item }}" - name: Ensure the VM volumes exist script: > virt_volume.sh {{ item.name }} {{ item.pool }} {{ item.capacity }} {{ item.format | default('qcow2') }} {% if item.image is defined %} {{ libvirt_vm_image_cache_path }}/{{ item.image | basename }} {% endif %} with_items: "{{ libvirt_vm_volumes }}" register: volume_result changed_when: - "{{ volume_result | success }}" - "{{ (volume_result.stdout | from_json).changed | default(True) }}"