summaryrefslogtreecommitdiffstats
path: root/ansible/deployment_poc/tasks/configure_libvirt.yml
diff options
context:
space:
mode:
Diffstat (limited to 'ansible/deployment_poc/tasks/configure_libvirt.yml')
-rw-r--r--ansible/deployment_poc/tasks/configure_libvirt.yml61
1 files changed, 61 insertions, 0 deletions
diff --git a/ansible/deployment_poc/tasks/configure_libvirt.yml b/ansible/deployment_poc/tasks/configure_libvirt.yml
new file mode 100644
index 0000000..b3e49b6
--- /dev/null
+++ b/ansible/deployment_poc/tasks/configure_libvirt.yml
@@ -0,0 +1,61 @@
+---
+- name: Provision VM
+ block:
+ - name: Create domain template
+ ansible.builtin.template:
+ src: "../templates/libvirt-template.xml.j2"
+ dest: "../templates/libvirt-{{ inventory_hostname }}.xml"
+ group: lysergic
+ mode: '0660'
+
+ - name: Create storage template
+ ansible.builtin.template:
+ src: "../templates/libvirt-storage-template.xml.j2"
+ dest: "../templates/generated/libvirt-storage-{{ inventory_hostname }}.xml"
+ group: lysergic
+ mode: '0660'
+
+ - name: Define domain
+ virt:
+ uri: "{{ libvirt_url }}"
+ command: define
+ xml: "{{ lookup('template', '../templates/libvirt-template.xml.j2') }}"
+ autostart: no
+ # delegate_to: localhost
+
+ - name: Query volumes
+ ansible.builtin.command:
+ argv:
+ - /usr/bin/virsh
+ - -c
+ - "{{ libvirt_url }}"
+ - vol-list
+ - "{{ storage.name }}"
+ register: volumes
+ no_log: true
+
+ - name: Define volume
+ ansible.builtin.command:
+ argv:
+ - /usr/bin/virsh
+ - -c
+ - "{{ libvirt_url }}"
+ - vol-create
+ - "{{ storage.name }}"
+ - "../templates/generated/libvirt-storage-{{ inventory_hostname }}.xml"
+ when: vm_name not in volumes.stdout
+
+ - name: Fetch MAC address
+ ansible.builtin.shell: "/usr/bin/virsh -c {{ libvirt_url }} domiflist {{ vm_name }} | awk '{print $5}' | cut -d/ -f 1 | tail -n 2 | head -n1" # ewww :-(
+ register: domiflist_mac
+
+ - name: Store MAC address
+ set_fact:
+ mac_address: "{{ domiflist_mac.stdout }}"
+
+ delegate_to: localhost
+
+ always:
+ - name: Debug
+ ansible.builtin.debug:
+ msg: "{{ libvirt_url if libvirt_url is defined }} - {{ storage.name if storage is defined }} - {{ mac_address if mac_address is defined }}"