summaryrefslogtreecommitdiff
path: root/roles/vm/guest/define
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2020-11-21 03:42:54 +0100
committerChristian Pointner <equinox@spreadspace.org>2020-11-21 03:42:54 +0100
commit8828d4e11c28da88d65e45014431361aabb0c3d5 (patch)
tree759456a48196e108cf35bab4f1c6a774e8c20170 /roles/vm/guest/define
parentadd some vmhost test machines (diff)
use delegation for vm/guest install and define
Diffstat (limited to 'roles/vm/guest/define')
-rw-r--r--roles/vm/guest/define/defaults/main.yml2
-rw-r--r--roles/vm/guest/define/tasks/main.yml49
-rw-r--r--roles/vm/guest/define/templates/libvirt-domain.xml.j218
3 files changed, 37 insertions, 32 deletions
diff --git a/roles/vm/guest/define/defaults/main.yml b/roles/vm/guest/define/defaults/main.yml
index f0bcc4fd..05aeaab6 100644
--- a/roles/vm/guest/define/defaults/main.yml
+++ b/roles/vm/guest/define/defaults/main.yml
@@ -1,5 +1,5 @@
---
-vm_define_autostart: "{{ not vm_define_installer and hostvars[install_hostname].install_cooked.vm.autostart | default(False) }}"
+vm_define_autostart: "{{ not vm_define_installer and install_cooked.vm.autostart | default(False) }}"
vm_define_start: yes
vm_define_installer: no
diff --git a/roles/vm/guest/define/tasks/main.yml b/roles/vm/guest/define/tasks/main.yml
index d0790628..65094bbb 100644
--- a/roles/vm/guest/define/tasks/main.yml
+++ b/roles/vm/guest/define/tasks/main.yml
@@ -1,5 +1,6 @@
---
- name: check if vm already exists
+ delegate_to: "{{ vm_host_cooked.name }}"
virt:
name: "{{ install_hostname }}"
command: info
@@ -7,43 +8,47 @@
- name: remove old vm
when: install_hostname in vmhost_info
+ delegate_to: "{{ vm_host_cooked.name }}"
block:
- - name: destroy exisiting vm
- virt:
- name: "{{ install_hostname }}"
- state: destroyed
+ - name: destroy exisiting vm
+ virt:
+ name: "{{ install_hostname }}"
+ state: destroyed
- - name: wait for vm to be destroyed
- wait_for_virt:
- name: "{{ install_hostname }}"
- states: shutdown,crashed
- timeout: 5
+ - name: wait for vm to be destroyed
+ wait_for_virt:
+ name: "{{ install_hostname }}"
+ states: shutdown,crashed
+ timeout: 5
- - name: undefining exisiting vm
- virt:
- name: "{{ install_hostname }}"
- command: undefine
+ - name: undefining exisiting vm
+ virt:
+ name: "{{ install_hostname }}"
+ command: undefine
- name: define vm
+ delegate_to: "{{ vm_host_cooked.name }}"
virt:
command: define
xml: "{{ lookup('template', 'libvirt-domain.xml.j2') }}"
- name: start new vm
when: vm_define_start | bool
+ delegate_to: "{{ vm_host_cooked.name }}"
block:
- - name: start vm
- virt:
- name: "{{ install_hostname }}"
- state: running
+ - name: start vm
+ virt:
+ name: "{{ install_hostname }}"
+ state: running
- - name: wait for VM to start
- wait_for_virt:
- name: "{{ install_hostname }}"
- states: running
- timeout: 10
+ - name: wait for VM to start
+ wait_for_virt:
+ name: "{{ install_hostname }}"
+ states: running
+ timeout: 10
- name: mark vm as autostarted
+ delegate_to: "{{ vm_host_cooked.name }}"
virt:
name: "{{ install_hostname }}"
autostart: "{{ vm_define_autostart }}"
diff --git a/roles/vm/guest/define/templates/libvirt-domain.xml.j2 b/roles/vm/guest/define/templates/libvirt-domain.xml.j2
index 05ad6750..ce8a48d4 100644
--- a/roles/vm/guest/define/templates/libvirt-domain.xml.j2
+++ b/roles/vm/guest/define/templates/libvirt-domain.xml.j2
@@ -1,8 +1,8 @@
<domain type='kvm'>
<name>{{ install_hostname }}</name>
- <memory>{{ ((hostvars[install_hostname].install_cooked.vm.memory | human_to_bytes) / 1024) | int }}</memory>
- <currentMemory>{{ ((hostvars[install_hostname].install_cooked.vm.memory | human_to_bytes) / 1024) | int }}</currentMemory>
- <vcpu>{{ hostvars[install_hostname].install_cooked.vm.numcpus }}</vcpu>
+ <memory>{{ ((install_cooked.vm.memory | human_to_bytes) / 1024) | int }}</memory>
+ <currentMemory>{{ ((install_cooked.vm.memory | human_to_bytes) / 1024) | int }}</currentMemory>
+ <vcpu>{{ install_cooked.vm.numcpus }}</vcpu>
<os>
<type arch='x86_64' machine='pc-0.12'>hvm</type>
{% if vm_define_installer %}
@@ -50,8 +50,8 @@
</disk>
{% endif %}
-{% if 'virtio' in hostvars[install_hostname].install_cooked.disks %}
-{% for device, src in hostvars[install_hostname].install_cooked.disks.virtio.items() %}
+{% if 'virtio' in install_cooked.disks %}
+{% for device, src in install_cooked.disks.virtio.items() %}
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' discard='unmap'/>
{% if src.type == 'lvm' %}
@@ -64,9 +64,9 @@
{% endfor %}
{% endif %}
-{% if 'scsi' in hostvars[install_hostname].install_cooked.disks %}
+{% if 'scsi' in install_cooked.disks %}
<controller type='scsi' index='0' model='virtio-scsi'/>
-{% for device, src in hostvars[install_hostname].install_cooked.disks.scsi.items() %}
+{% for device, src in install_cooked.disks.scsi.items() %}
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' discard='unmap'/>
{% if src.type == 'lvm' %}
@@ -79,8 +79,8 @@
{% endfor %}
{% endif %}
-{% if hostvars[install_hostname].install_cooked.interfaces %}
-{% for if in hostvars[install_hostname].install_cooked.interfaces %}
+{% if install_cooked.interfaces %}
+{% for if in install_cooked.interfaces %}
<interface type='bridge'>
{% if 'mac' in if %}
<mac address='{{ if.mac }}'/>