--- - name: Deploy VM on Xen block: - name: Build disk definitions ansible.builtin.include_tasks: _xen_disks.yml - name: Create VM disks for Xen delegate_to: localhost ansible.builtin.command: argv: - qemu-img - create - -f - qcow2 - "{{ item.path }}" - "{{ item.size }}G" creates: "{{ item.path }}" loop: "{{ virtualization_xen_disks }}" loop_control: label: "{{ item.path }}" - name: Render Xen VM configuration delegate_to: localhost vars: xen_installer_media_enabled: true ansible.builtin.template: src: xen.cfg.j2 dest: /tmp/xen-{{ hostname }}.cfg mode: "0644" - name: Check if Xen VM already exists delegate_to: localhost ansible.builtin.command: argv: - xl - list register: virtualization_xen_pre_check changed_when: false failed_when: false - name: Create Xen VM delegate_to: localhost ansible.builtin.command: argv: - xl - create - /tmp/xen-{{ hostname }}.cfg register: virtualization_xen_create_result changed_when: virtualization_xen_create_result.rc == 0 when: >- not (virtualization_xen_pre_check.stdout | default('') is search('(?m)^' ~ (hostname | ansible.builtin.regex_escape) ~ '\\s+\\d+\\s')) - name: Verify VM is running delegate_to: localhost ansible.builtin.command: argv: - xl - list register: virtualization_xen_list_result changed_when: false failed_when: >- not (virtualization_xen_list_result.stdout | default('') is search('(?m)^' ~ (hostname | ansible.builtin.regex_escape) ~ '\\s+\\d+\\s')) - name: Set VM created fact ansible.builtin.set_fact: virtualization_vm_created_in_run: "{{ (virtualization_xen_create_result.rc | default(1)) == 0 }}"