summaryrefslogtreecommitdiff
path: root/roles/vm
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2024-01-19 01:47:04 +0100
committerChristian Pointner <equinox@spreadspace.org>2024-01-19 01:47:04 +0100
commit0085933dabbe4d36e3e1bf0a5a7e1f09e5c3645c (patch)
tree46f5802d79964b60b58ade02bd412a11c9caf781 /roles/vm
parentdocker/engine: generic plugin handling (diff)
vm/guest: some fixes for ubuntu installer, still not fully working
Diffstat (limited to 'roles/vm')
-rw-r--r--roles/vm/guest/create/templates/libvirt-domain.xml.j26
-rw-r--r--roles/vm/guest/install/tasks/installer-debian.yml6
-rw-r--r--roles/vm/guest/install/tasks/installer-openbsd.yml3
-rw-r--r--roles/vm/guest/install/tasks/installer-ubuntu.yml9
-rw-r--r--roles/vm/guest/install/tasks/main.yml13
-rw-r--r--roles/vm/guest/network/tasks/Ubuntu.yml15
6 files changed, 40 insertions, 12 deletions
diff --git a/roles/vm/guest/create/templates/libvirt-domain.xml.j2 b/roles/vm/guest/create/templates/libvirt-domain.xml.j2
index e578e0f8..d29e8e40 100644
--- a/roles/vm/guest/create/templates/libvirt-domain.xml.j2
+++ b/roles/vm/guest/create/templates/libvirt-domain.xml.j2
@@ -19,12 +19,12 @@
{% endif %}
<type machine='q35'>hvm</type>
{% if vm_create_installer %}
-{% if install_distro == 'debian' or install_distro == 'ubuntu' or install_distro == 'kali' %}
+{% if install_distro == 'debian' or install_distro == 'kali' %}
<kernel>{{ installer_tmpdir }}/linux</kernel>
<initrd>{{ installer_tmpdir }}/initrd.gz</initrd>
<cmdline>console=ttyS0,115200n8 auto</cmdline>
<boot dev='hd'/>
-{% elif install_distro == 'openbsd' %}
+{% elif install_distro == 'openbsd' or install_distro == 'ubuntu' %}
<boot dev='cdrom'/>
{% endif %}
{% else %}
@@ -72,7 +72,7 @@
</rng>
{% if vm_create_installer %}
-{% if install_distro == 'openbsd' %}
+{% if install_distro == 'openbsd' or install_distro == 'ubuntu' %}
<disk type='file' device='cdrom'>
<driver name='qemu'/>
<source file='{{ installer_tmpdir }}/{{ inventory_hostname }}.iso'/>
diff --git a/roles/vm/guest/install/tasks/installer-debian.yml b/roles/vm/guest/install/tasks/installer-debian.yml
index 3373b2d1..dce24907 100644
--- a/roles/vm/guest/install/tasks/installer-debian.yml
+++ b/roles/vm/guest/install/tasks/installer-debian.yml
@@ -17,12 +17,12 @@
copy:
remote_src: yes
src: "{{ debian_installer_target_dir }}/{{ item }}"
- dest: "{{ tmpdir.path }}/{{ item }}"
+ dest: "{{ vm_install_tmpdir.path }}/{{ item }}"
- name: generate host specific initial ramdisk
vars:
- debian_preseed_initrd: "{{ tmpdir.path }}/initrd.gz"
- debian_preseed_tmpdir: "{{ tmpdir.path }}"
+ debian_preseed_initrd: "{{ vm_install_tmpdir.path }}/initrd.gz"
+ debian_preseed_tmpdir: "{{ vm_install_tmpdir.path }}"
debian_preseed_virtual_machine: yes
debian_preseed_force_net_ifnames_policy: path
debian_preseed_no_netplan: yes
diff --git a/roles/vm/guest/install/tasks/installer-openbsd.yml b/roles/vm/guest/install/tasks/installer-openbsd.yml
index e3e05fb4..2707339d 100644
--- a/roles/vm/guest/install/tasks/installer-openbsd.yml
+++ b/roles/vm/guest/install/tasks/installer-openbsd.yml
@@ -10,8 +10,9 @@
- name: generate host specific autoinstall iso
vars:
+ openbsd_installer_version: "{{ install_codename }}"
obsd_autoinstall_orig_iso: "{{ hostvars[vm_host.name].installer_base_path }}/openbsd-{{ install_codename }}/{{ install.arch | default('amd64') }}/install{{ openbsd_installer_version_short }}.iso"
- obsd_autoinstall_tmpdir: "{{ tmpdir.path }}"
+ obsd_autoinstall_tmpdir: "{{ vm_install_tmpdir.path }}"
obsd_autoinstall_version: "{{ install_codename }}"
obsd_autoinstall_arch: "{{ install.arch | default('amd64') }}"
obsd_autoinstall_serial_device: com0
diff --git a/roles/vm/guest/install/tasks/installer-ubuntu.yml b/roles/vm/guest/install/tasks/installer-ubuntu.yml
new file mode 100644
index 00000000..fcbff923
--- /dev/null
+++ b/roles/vm/guest/install/tasks/installer-ubuntu.yml
@@ -0,0 +1,9 @@
+---
+## this file is sourced using import_task and all task are therefore delegated to the vm-host
+- name: fetch ubuntu installer files
+ vars:
+ installer_base_path: "{{ hostvars[vm_host.name].installer_base_path }}"
+ ubuntu_installer_iso_variant: live-server
+ iso_install_target_dir: "{{ vm_install_tmpdir.path }}"
+ import_role:
+ name: installer/ubuntu/iso
diff --git a/roles/vm/guest/install/tasks/main.yml b/roles/vm/guest/install/tasks/main.yml
index 6a61b787..0cb7b925 100644
--- a/roles/vm/guest/install/tasks/main.yml
+++ b/roles/vm/guest/install/tasks/main.yml
@@ -39,17 +39,20 @@
path: "{{ hostvars[vm_host.name].installer_base_path }}/"
prefix: ".{{ inventory_hostname }}."
state: directory
- register: tmpdir
+ register: vm_install_tmpdir
- - when: install_distro in ['debian', 'ubuntu', 'kali']
+ - when: install_distro in ['debian', 'kali']
include_tasks: installer-debian.yml
+ - when: install_distro in ['ubuntu']
+ include_tasks: installer-ubuntu.yml
+
- when: install_distro in ['openbsd']
include_tasks: installer-openbsd.yml
- name: Make installer workdir readable by qemu
acl:
- path: "{{ tmpdir.path }}"
+ path: "{{ vm_install_tmpdir.path }}"
state: present
entity: libvirt-qemu
etype: user
@@ -64,7 +67,7 @@
- name: define temporary installer vm
vars:
vm_create_installer: yes
- installer_tmpdir: "{{ tmpdir.path }}"
+ installer_tmpdir: "{{ vm_install_tmpdir.path }}"
import_role:
name: vm/guest/create
@@ -91,7 +94,7 @@
always:
- name: cleanup temporary workdir
file:
- path: "{{ tmpdir.path }}"
+ path: "{{ vm_install_tmpdir.path }}"
state: absent
- name: remove temporary installer vm
diff --git a/roles/vm/guest/network/tasks/Ubuntu.yml b/roles/vm/guest/network/tasks/Ubuntu.yml
new file mode 100644
index 00000000..12dc4812
--- /dev/null
+++ b/roles/vm/guest/network/tasks/Ubuntu.yml
@@ -0,0 +1,15 @@
+---
+- name: configure systemd link units
+ when: network.systemd_link is defined
+ block:
+ - name: install systemd network link units
+ loop: "{{ network.systemd_link.interfaces }}"
+ loop_control:
+ label: "{{ item.name }}"
+ index_var: interface_index
+ template:
+ src: systemd.link.j2
+ dest: "/etc/systemd/network/{{ '%02d' | format(interface_index + 11) }}-{{ item.name }}.link"
+ notify: rebuild initramfs
+
+## TODO: generate netplan config