summaryrefslogtreecommitdiff
path: root/roles/vm/install
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2019-07-06 18:17:57 +0200
committerChristian Pointner <equinox@spreadspace.org>2019-07-06 18:17:57 +0200
commitd2fb525388757174343d3229592f917673da8c0b (patch)
treeb924001221a2a4e59cee07c27d2f4ec91cc01f0e /roles/vm/install
parentadded r3-vex2 (diff)
seperate vm/install and vm/define
Diffstat (limited to 'roles/vm/install')
-rw-r--r--roles/vm/install/tasks/main.yml68
-rw-r--r--roles/vm/install/templates/libvirt-domain.xml.j276
2 files changed, 6 insertions, 138 deletions
diff --git a/roles/vm/install/tasks/main.yml b/roles/vm/install/tasks/main.yml
index 9d603712..a15e2a47 100644
--- a/roles/vm/install/tasks/main.yml
+++ b/roles/vm/install/tasks/main.yml
@@ -8,30 +8,6 @@
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
@@ -54,25 +30,12 @@
etype: user
permissions: rx
- - name: define new installer vm
- virt:
- 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 }}."
@@ -84,32 +47,13 @@
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:
- 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
diff --git a/roles/vm/install/templates/libvirt-domain.xml.j2 b/roles/vm/install/templates/libvirt-domain.xml.j2
deleted file mode 100644
index f3bdeae1..00000000
--- a/roles/vm/install/templates/libvirt-domain.xml.j2
+++ /dev/null
@@ -1,76 +0,0 @@
-<domain type='kvm'>
- <name>{{ hostname }}</name>
- <memory>{{ hostvars[hostname].install_cooked.mem * 1024 }}</memory>
- <currentMemory>{{ hostvars[hostname].install_cooked.mem * 1024 }}</currentMemory>
- <vcpu>{{ hostvars[hostname].install_cooked.numcpu }}</vcpu>
- <os>
- <type arch='x86_64' machine='pc-0.12'>hvm</type>
-{% if run_installer %}
- <kernel>{{ debian_installer_path }}/{{ install_distro }}-{{ install_codename }}/{{ hostvars[hostname].install_cooked.arch | default('amd64') }}/linux</kernel>
- <initrd>{{ preseed_tmpdir }}/initrd.preseed.gz</initrd>
- <cmdline>console=ttyS0,115200n8</cmdline>
-{% endif %}
- <boot dev='hd'/>
- </os>
- <features>
- <acpi/>
- <apic/>
- <pae/>
- </features>
- <clock offset='utc'/>
- <on_poweroff>destroy</on_poweroff>
-{% if run_installer %}
- <on_reboot>destroy</on_reboot>
- <on_crash>destroy</on_crash>
-{% else %}
- <on_reboot>restart</on_reboot>
- <on_crash>restart</on_crash>
-{% endif %}
- <devices>
- <emulator>/usr/bin/kvm</emulator>
- <!-- Provide a virtualized RNG to the guest -->
- <rng model='virtio'>
- <!-- Allow consuming up to 10kb/s, measured over 2s -->
- <rate period="2000" bytes="20480"/>
- <backend model='random'>/dev/random</backend>
- </rng>
-
-{% if 'virtio' in hostvars[hostname].install_cooked.disks %}
-{% for device, lv in hostvars[hostname].install_cooked.disks.virtio.items() %}
- <disk type='block' device='disk'>
- <driver name='qemu' type='raw' cache='none' discard='unmap'/>
- <source dev='/dev/mapper/{{ lv.vg | replace('-', '--') }}-{{ lv.lv | replace('-', '--') }}'/>
- <target dev='{{ device }}' bus='virtio'/>
- </disk>
-{% endfor %}
-{% endif %}
-
-{% if 'scsi' in hostvars[hostname].install_cooked.disks %}
- <controller type='scsi' index='0' model='virtio-scsi'/>
-{% for device, lv in hostvars[hostname].install_cooked.disks.scsi.items() %}
- <disk type='block' device='disk'>
- <driver name='qemu' type='raw' cache='none' discard='unmap'/>
- <source dev='/dev/mapper/{{ lv.vg | replace('-', '--') }}-{{ lv.lv | replace('-', '--') }}'/>
- <target dev='{{ device }}' bus='scsi'/>
- </disk>
-{% endfor %}
-{% endif %}
-
-{% if hostvars[hostname].install_cooked.interfaces %}
-{% for if in hostvars[hostname].install_cooked.interfaces %}
- <interface type='bridge'>
- <source bridge='{{ if.bridge }}'/>
- <model type='virtio'/>
- <address type='pci' domain='0x0000' bus='0x01' slot='0x0{{ loop.index }}' function='0x0'/>
- </interface>
-{% endfor %}
-{% endif %}
-
- <serial type='pty'>
- <target port='0'/>
- </serial>
- <console type='pty'>
- <target type='serial' port='0'/>
- </console>
- </devices>
-</domain>