61 lines
2.0 KiB
YAML
61 lines
2.0 KiB
YAML
---
|
|
- name: Cleanup Xen installer media
|
|
when: hypervisor_type == "xen"
|
|
delegate_to: localhost
|
|
become: false
|
|
vars:
|
|
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: "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
|