diff --git a/roles/cleanup/tasks/xen.yml b/roles/cleanup/tasks/xen.yml index e5c09d9..68e29e0 100644 --- a/roles/cleanup/tasks/xen.yml +++ b/roles/cleanup/tasks/xen.yml @@ -7,33 +7,11 @@ xen_installer_media_enabled: "{{ xen_installer_media_enabled | default(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: "{{ disk_letter_map }}" - 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 + ansible.builtin.include_tasks: ../../virtualization/tasks/_xen_disks.yml - 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 diff --git a/roles/virtualization/tasks/_xen_disks.yml b/roles/virtualization/tasks/_xen_disks.yml new file mode 100644 index 0000000..4840418 --- /dev/null +++ b/roles/virtualization/tasks/_xen_disks.yml @@ -0,0 +1,26 @@ +--- +- name: Build Xen disk definitions + when: virtualization_xen_disks is not defined + block: + - name: Compute Xen disk configuration + ansible.builtin.set_fact: + virtualization_xen_disks: "{{ virtualization_xen_disks | default([]) + [_xen_disk_cfg] }}" + vars: + device_letter_map: "{{ disk_letter_map }}" + device_letter: "{{ device_letter_map[ansible_loop.index0] }}" + _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 diff --git a/roles/virtualization/tasks/xen.yml b/roles/virtualization/tasks/xen.yml index d87c948..4da085b 100644 --- a/roles/virtualization/tasks/xen.yml +++ b/roles/virtualization/tasks/xen.yml @@ -2,27 +2,7 @@ - name: Deploy VM on Xen block: - name: Build disk definitions - ansible.builtin.set_fact: - virtualization_xen_disks: "{{ virtualization_xen_disks | default([]) + [virtualization_xen_disk_cfg] }}" - vars: - device_letter_map: "{{ disk_letter_map }}" - device_letter: "{{ device_letter_map[ansible_loop.index0] }}" - virtualization_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 + ansible.builtin.include_tasks: _xen_disks.yml - name: Create VM disks for Xen delegate_to: localhost