---
- name: create disks for vm
with_dict: "{{ hostvars[hostname].install_cooked.disks.virtio | default({}) | combine(hostvars[hostname].install_cooked.disks.scsi | default({})) }}"
+ loop_control:
+ label: "{{ item.value.vg }} / {{ item.value.lv }} ({{ item.value.size }})"
lvol:
vg: "{{ item.value.vg }}"
lv: "{{ item.value.lv }}"
size: "{{ item.value.size }}"
-- name: check if vm already exists
- virt:
- name: "{{ hostname }}"
- command: info
- register: vmhost_info
-
-- 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
name: preseed
vars:
ssh_users_root: "{{ hostvars[hostname].ssh_users_root }}"
- install_interface: enp1s1
preseed_tmpdir: "{{ tmpdir.path }}"
+ preseed_force_net_ifnames_policy: path
+ install_interface: enp1s1
- name: Make preseed workdir readable by qemu
acl:
etype: user
permissions: rx
- - name: define new installer vm
- virt:
- name: "{{ hostname }}"
- command: define
- xml: "{{ lookup('template', 'libvirt-domain.xml.j2') }}"
+ - import_role:
+ name: vm/define
vars:
- run_installer: yes
+ vm_define_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 }}."
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
-- name: define new production vm
- virt:
- name: "{{ hostname }}"
- command: define
- xml: "{{ lookup('template', 'libvirt-domain.xml.j2') }}"
+- import_role:
+ name: vm/define
vars:
- run_installer: no
-
-- name: start vm
- virt:
- name: "{{ hostname }}"
- state: running
-
-- name: mark vm as autostarted
- virt:
- name: "{{ hostname }}"
- autostart: "{{ hostvars[hostname].install_cooked.autostart }}"
- command: info ## virt module needs either command or state
- when: hostvars[hostname].install_cooked.autostart is defined
+ vm_define_installer: no