--- - name: Cleanup Xen installer media when: hypervisor_type == "xen" delegate_to: localhost become: false block: - name: Ensure Xen disk definitions exist when: virtualization_xen_disks is not defined ansible.builtin.set_fact: cleanup_xen_disks: "{{ cleanup_xen_disks | default([]) + [cleanup_xen_disk_cfg] }}" vars: device_letter_map: "abcdefghijklmnopqrstuvwxyz" device_letter: "{{ device_letter_map[ansible_loop.index0] }}" cleanup_xen_disk_cfg: >- {{ { 'path': ( virtualization_xen_disk_path ~ '/' ~ hostname ~ '.qcow2' if ansible_loop.index0 == 0 else virtualization_xen_disk_path ~ '/' ~ hostname ~ '-disk' ~ ansible_loop.index0 ~ '.qcow2' ), 'target': 'xvd' ~ device_letter, 'size': (item.size | float) } }} loop: "{{ system_cfg.disks }}" loop_control: label: "{{ item | to_json }}" extended: true changed_when: false - name: Render Xen VM configuration without installer media vars: xen_installer_media_enabled: false virtualization_xen_disks: "{{ virtualization_xen_disks | default(cleanup_xen_disks | default([])) }}" ansible.builtin.template: src: xen.cfg.j2 dest: /tmp/xen-{{ hostname }}.cfg mode: "0644" - name: Destroy Xen VM if running ansible.builtin.command: argv: - xl - destroy - "{{ hostname }}" register: cleanup_xen_destroy failed_when: false changed_when: cleanup_xen_destroy.rc == 0 - name: Start Xen VM without installer media ansible.builtin.command: argv: - xl - create - /tmp/xen-{{ hostname }}.cfg register: cleanup_xen_start_result changed_when: cleanup_xen_start_result.rc == 0