summaryrefslogtreecommitdiff
path: root/roles/vm
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2020-07-11 01:42:07 +0200
committerChristian Pointner <equinox@spreadspace.org>2020-07-11 01:42:07 +0200
commitc188d4ac1713506c3028b4501730713cfda0ed36 (patch)
treee056a15d599981f963f20365848d4032aa792191 /roles/vm
parentpreseed/partman: nicer error text for not-enough-space (diff)
parentopenbsd installer: improve image verification (diff)
Merge branch 'topic/debian-installer-verification'
Diffstat (limited to 'roles/vm')
-rw-r--r--roles/vm/define/templates/libvirt-domain.xml.j26
-rw-r--r--roles/vm/host/tasks/main.yml4
-rw-r--r--roles/vm/install/tasks/installer-debian.yml21
-rw-r--r--roles/vm/install/tasks/installer-openbsd.yml19
-rw-r--r--roles/vm/install/tasks/main.yml36
5 files changed, 57 insertions, 29 deletions
diff --git a/roles/vm/define/templates/libvirt-domain.xml.j2 b/roles/vm/define/templates/libvirt-domain.xml.j2
index c4c9e52a..ba0dcd5a 100644
--- a/roles/vm/define/templates/libvirt-domain.xml.j2
+++ b/roles/vm/define/templates/libvirt-domain.xml.j2
@@ -7,8 +7,8 @@
<type arch='x86_64' machine='pc-0.12'>hvm</type>
{% if vm_define_installer %}
{% if install_distro == 'debian' or install_distro == 'ubuntu' %}
- <kernel>{{ installer_path }}/{{ install_distro }}-{{ install_codename }}/{{ hostvars[install_hostname].install_cooked.arch | default('amd64') }}/linux</kernel>
- <initrd>{{ preseed_tmpdir }}/initrd.preseed.gz</initrd>
+ <kernel>{{ installer_base_path }}/{{ install_distro }}-{{ install_codename }}/{{ hostvars[install_hostname].install_cooked.arch | default('amd64') }}-netboot/linux</kernel>
+ <initrd>{{ installer_tmpdir }}/initrd.{{ install_hostname }}.gz</initrd>
<cmdline>console=ttyS0,115200n8 DEBCONF_DEBUG=5</cmdline>
<boot dev='hd'/>
{% elif install_distro == 'openbsd' %}
@@ -44,7 +44,7 @@
{% if vm_define_installer and install_distro == 'openbsd' %}
<disk type='file' device='cdrom'>
<driver name='qemu'/>
- <source file='{{ obsd_autoinstall_tmpdir }}/install.iso'/>
+ <source file='{{ installer_tmpdir }}/{{ install_hostname }}.iso'/>
<target dev='hdc' bus='ide'/>
<readonly/>
</disk>
diff --git a/roles/vm/host/tasks/main.yml b/roles/vm/host/tasks/main.yml
index 390016a2..4c29970d 100644
--- a/roles/vm/host/tasks/main.yml
+++ b/roles/vm/host/tasks/main.yml
@@ -43,11 +43,11 @@
- name: mount filesytem
mount:
src: "/dev/mapper/{{ installer_lvm.vg | replace('-', '--') }}-{{ installer_lvm.lv | replace('-', '--') }}"
- path: "{{ installer_path }}"
+ path: "{{ installer_base_path }}"
fstype: "{{ installer_lvm.fs }}"
state: mounted
- name: make sure installer directory exists
file:
- name: "{{ installer_path }}"
+ name: "{{ installer_base_path }}"
state: directory
diff --git a/roles/vm/install/tasks/installer-debian.yml b/roles/vm/install/tasks/installer-debian.yml
new file mode 100644
index 00000000..e0492969
--- /dev/null
+++ b/roles/vm/install/tasks/installer-debian.yml
@@ -0,0 +1,21 @@
+---
+- name: fetch debian installer files
+ vars:
+ debian_installer_distro: "{{ install_distro }}"
+ debian_installer_codename: "{{ install_codename }}"
+ debian_installer_arch: "{{ hostvars[install_hostname].install_cooked.arch | default('amd64') }}"
+ debian_installer_variant: netboot
+ import_role:
+ name: installer/debian/fetch
+
+- name: generate host specific initial ramdisk
+ vars:
+ ssh_keys_root: "{{ hostvars[install_hostname].ssh_keys_root }}"
+ preseed_orig_initrd: "{{ installer_base_path }}/{{ install_distro }}-{{ install_codename }}/{{ hostvars[install_hostname].install_cooked.arch | default('amd64') }}-netboot/initrd.gz"
+ preseed_tmpdir: "{{ tmpdir.path }}"
+ preseed_virtual_machine: yes
+ preseed_force_net_ifnames_policy: path
+ preseed_no_netplan: yes
+ install_interface: enp1s1
+ import_role:
+ name: installer/debian/preseed
diff --git a/roles/vm/install/tasks/installer-openbsd.yml b/roles/vm/install/tasks/installer-openbsd.yml
new file mode 100644
index 00000000..afa17c45
--- /dev/null
+++ b/roles/vm/install/tasks/installer-openbsd.yml
@@ -0,0 +1,19 @@
+---
+- name: fetch openbsd installer files
+ vars:
+ openbsd_installer_version: "{{ install_codename }}"
+ openbsd_installer_arch: "{{ hostvars[install_hostname].install_cooked.arch | default('amd64') }}"
+ import_role:
+ name: installer/openbsd/fetch
+
+- name: generate host specific autoinstall iso
+ vars:
+ ssh_keys_root: "{{ hostvars[install_hostname].ssh_keys_root }}"
+ obsd_autoinstall_orig_iso: "{{ installer_base_path }}/openbsd-{{ install_codename }}/{{ hostvars[install_hostname].install_cooked.arch | default('amd64') }}/install{{ openbsd_installer_version_short }}.iso"
+ obsd_autoinstall_tmpdir: "{{ tmpdir.path }}"
+ obsd_autoinstall_version: "{{ install_codename }}"
+ obsd_autoinstall_arch: "{{ hostvars[install_hostname].install_cooked.arch | default('amd64') }}"
+ obsd_autoinstall_serial_device: com0
+ install_interface: vio0
+ import_role:
+ name: installer/openbsd/autoinstall
diff --git a/roles/vm/install/tasks/main.yml b/roles/vm/install/tasks/main.yml
index 6b8f9ca7..a4511459 100644
--- a/roles/vm/install/tasks/main.yml
+++ b/roles/vm/install/tasks/main.yml
@@ -1,6 +1,6 @@
---
- name: create lvm-based disks for vm
- loop: "{{ hostvars[install_hostname].install_cooked.disks.virtio | default({}) | combine(hostvars[install_hostname].install_cooked.disks.scsi | default({})) | dict2items | selectattr('value.type', 'eq', 'lvm') | list }}"
+ loop: "{{ hostvars[install_hostname].install_cooked.disks.virtio | default({}) | combine(hostvars[install_hostname].install_cooked.disks.scsi | default({})) | dict2items | selectattr('value.type', 'eq', 'lvm') | list }}"
loop_control:
label: "{{ item.value.vg }} / {{ item.value.lv }} ({{ item.value.size }})"
lvol:
@@ -31,28 +31,16 @@
- block:
- name: create a temporary workdir
tempfile:
+ path: "{{ installer_base_path }}/"
+ prefix: ".{{ install_hostname }}."
state: directory
register: tmpdir
- when: install_distro in ['debian', 'ubuntu']
- vars:
- ssh_keys_root: "{{ hostvars[install_hostname].ssh_keys_root }}"
- preseed_tmpdir: "{{ tmpdir.path }}"
- preseed_virtual_machine: yes
- preseed_force_net_ifnames_policy: path
- preseed_no_netplan: yes
- install_interface: enp1s1
- import_role:
- name: installer/debian/preseed
+ import_tasks: installer-debian.yml
- when: install_distro in ['openbsd']
- vars:
- ssh_keys_root: "{{ hostvars[install_hostname].ssh_keys_root }}"
- obsd_autoinstall_tmpdir: "{{ tmpdir.path }}"
- obsd_autoinstall_serial_device: com0
- install_interface: vio0
- import_role:
- name: installer/openbsd/autoinstall
+ import_tasks: installer-openbsd.yml
- name: Make installer workdir readable by qemu
acl:
@@ -62,11 +50,11 @@
etype: user
permissions: rx
- - import_role:
- name: vm/define
- vars:
+ - vars:
vm_define_installer: yes
- preseed_tmpdir: "{{ tmpdir.path }}"
+ installer_tmpdir: "{{ tmpdir.path }}"
+ import_role:
+ name: vm/define
- debug:
msg: "you can check on the status of the installer running this command 'virsh console {{ install_hostname }}' on host {{ inventory_hostname }}."
@@ -94,7 +82,7 @@
path: "{{ tmpdir.path }}"
state: absent
-- import_role:
- name: vm/define
- vars:
+- vars:
vm_define_installer: no
+ import_role:
+ name: vm/define