summaryrefslogtreecommitdiff
path: root/roles/vm-install/tasks/main.yaml
diff options
context:
space:
mode:
Diffstat (limited to 'roles/vm-install/tasks/main.yaml')
-rw-r--r--roles/vm-install/tasks/main.yaml110
1 files changed, 110 insertions, 0 deletions
diff --git a/roles/vm-install/tasks/main.yaml b/roles/vm-install/tasks/main.yaml
new file mode 100644
index 00000000..214db25a
--- /dev/null
+++ b/roles/vm-install/tasks/main.yaml
@@ -0,0 +1,110 @@
+---
+- name: generate preseed file
+ template:
+ src: "preseed_{{ vmdistro }}.cfg.j2"
+ dest: "/home/rhadmin/ansible/preseed/vm-{{ inventory_hostname }}-{{ vmdistro }}.cfg"
+ owner: rhadmin
+ group: rhadmin
+ delegate_to: ansible
+
+- name: create disks for vm
+ with_dict: "{{ vm_install.disks.virtio | default({}) | combine(vm_install.disks.scsi | default({})) }}"
+ lvol:
+ vg: "{{ item.value.vg }}"
+ lv: "{{ item.value.lv }}"
+ size: "{{ item.value.size }}"
+ delegate_to: "{{ vm_install.host }}"
+
+- name: check if vm already exists
+ virt:
+ name: "{{ inventory_hostname }}"
+ command: info
+ delegate_to: "{{ vm_install.host }}"
+ register: vmhost_info
+
+- name: destroy exisiting vm
+ virt:
+ name: "{{ inventory_hostname }}"
+ state: destroyed
+ delegate_to: "{{ vm_install.host }}"
+ when: inventory_hostname in vmhost_info
+
+- name: wait for vm to be destroyed
+ wait_for_virt:
+ name: "{{ inventory_hostname }}"
+ states: shutdown,crashed
+ timeout: 5
+ delegate_to: "{{ vm_install.host }}"
+ when: inventory_hostname in vmhost_info
+
+- name: undefining exisiting vm
+ virt:
+ name: "{{ inventory_hostname }}"
+ command: undefine
+ delegate_to: "{{ vm_install.host }}"
+ when: inventory_hostname in vmhost_info
+
+- name: enable installer in VM config
+ set_fact:
+ run_installer: True
+
+- name: define new installer vm
+ virt:
+ name: "{{ inventory_hostname }}"
+ command: define
+ xml: "{{ lookup('template', 'libvirt-domain.xml.j2') }}"
+ delegate_to: "{{ vm_install.host }}"
+
+- name: start vm
+ virt:
+ name: "{{ inventory_hostname }}"
+ state: running
+ delegate_to: "{{ vm_install.host }}"
+
+- name: wait for installer to start
+ wait_for_virt:
+ name: "{{ inventory_hostname }}"
+ states: running
+ timeout: 10
+ delegate_to: "{{ vm_install.host }}"
+
+- debug:
+ msg: "you can check on the status of the installer running this command 'virsh console {{ inventory_hostname }}' on host {{ vm_install.host }}."
+
+- name: wait for installer to finish or crash
+ wait_for_virt:
+ name: "{{ inventory_hostname }}"
+ states: shutdown,crashed
+ timeout: 600
+ delegate_to: "{{ vm_install.host }}"
+ register: installer_result
+ failed_when: installer_result.state == "crashed"
+
+- name: undefining installer vm
+ virt:
+ name: "{{ inventory_hostname }}"
+ command: undefine
+ delegate_to: "{{ vm_install.host }}"
+
+- name: disable installer in VM config
+ set_fact:
+ run_installer: False
+
+- name: define new production vm
+ virt:
+ name: "{{ inventory_hostname }}"
+ command: define
+ xml: "{{ lookup('template', 'libvirt-domain.xml.j2') }}"
+ delegate_to: "{{ vm_install.host }}"
+
+- name: start vm
+ virt:
+ name: "{{ inventory_hostname }}"
+ state: running
+ autostart: "{{ vm_install.autostart | default(omit) }}"
+ delegate_to: "{{ vm_install.host }}"
+
+- name: wait for vm to start up
+ wait_for_connection:
+ delay: 5
+ timeout: 120