-- name: destroy exisiting vm
- virt:
- name: "{{ vmname }}"
- state: destroyed
- when: vmname in vmhost_info
-
-- name: wait for vm to be destroyed
- wait_for_virt:
- name: "{{ vmname }}"
- states: shutdown,crashed
- timeout: 5
- when: vmname in vmhost_info
-
-- name: undefining exisiting vm
- virt:
- name: "{{ vmname }}"
- command: undefine
- when: vmname in vmhost_info
-
-- name: enable installer in VM config
- set_fact:
- run_installer: True
-
-- name: define new installer vm
- virt:
- name: "{{ vmname }}"
- command: define
- xml: "{{ lookup('template', 'libvirt-domain.xml.j2') }}"
-
-- name: start vm
- virt:
- name: "{{ vmname }}"
- state: running
-
-- name: wait for installer to start
- wait_for_virt:
- name: "{{ vmname }}"
- states: running
- timeout: 10
-
-- debug:
- msg: "you can check on the status of the installer running this command 'virsh console {{ vmname }}' on host {{ inventory_hostname }}."
-
-- name: wait for installer to finish or crash
- wait_for_virt:
- name: "{{ vmname }}"
- states: shutdown,crashed
- timeout: 900
- register: installer_result
- failed_when: installer_result.failed or installer_result.state == "crashed"
-
-- name: undefining installer vm
- virt:
- name: "{{ vmname }}"
- command: undefine
-
-- name: disable installer in VM config
- set_fact:
- run_installer: False
+- block:
+ - name: destroy exisiting vm
+ virt:
+ name: "{{ hostname }}"
+ state: destroyed
+
+ - name: wait for vm to be destroyed
+ wait_for_virt:
+ name: "{{ hostname }}"
+ states: shutdown,crashed
+ timeout: 5
+
+ - name: undefining exisiting vm
+ virt:
+ name: "{{ hostname }}"
+ command: undefine
+
+ when: hostname in vmhost_info
+
+- block:
+ - name: create a temporary workdir
+ tempfile:
+ state: directory
+ register: tmpdir
+
+ - import_role:
+ name: preseed
+ vars:
+ ssh_users_root: "{{ hostvars[hostname].ssh_users_root }}"
+ install_interface: enp1s1
+ preseed_tmpdir: "{{ tmpdir.path }}"
+
+ - name: Make preseed workdir readable by qemu
+ acl:
+ path: "{{ tmpdir.path }}"
+ state: present
+ entity: libvirt-qemu
+ etype: user
+ permissions: rx
+
+ - name: define new installer vm
+ virt:
+ name: "{{ hostname }}"
+ command: define
+ xml: "{{ lookup('template', 'libvirt-domain.xml.j2') }}"
+ vars:
+ run_installer: yes
+ preseed_tmpdir: "{{ tmpdir.path }}"
+
+ - name: start vm
+ virt:
+ name: "{{ hostname }}"
+ state: running
+
+ - name: wait for installer to start
+ wait_for_virt:
+ name: "{{ hostname }}"
+ states: running
+ timeout: 10
+
+ - debug:
+ msg: "you can check on the status of the installer running this command 'virsh console {{ hostname }}' on host {{ inventory_hostname }}."
+
+ - name: wait for installer to finish or crash
+ wait_for_virt:
+ name: "{{ hostname }}"
+ states: shutdown,crashed
+ timeout: 900
+ register: installer_result
+ failed_when: installer_result.failed or installer_result.state == "crashed"
+
+ - name: undefining installer vm
+ virt:
+ name: "{{ hostname }}"
+ command: undefine
+
+ always:
+ - name: cleanup temporary workdir
+ file:
+ path: "{{ tmpdir.path }}"
+ state: absent