From 07047917569d95cd7cb4b38a18ae1a96cfc427e9 Mon Sep 17 00:00:00 2001 From: Matt Crees Date: Fri, 19 Jul 2024 10:57:18 +0100 Subject: [PATCH 1/2] Bump stackhpc.systemd_networkd role to v1.0.6 Closes-Bug: #2073100 Change-Id: Ied06ee3380a149c4c8d082562c93f9b771457cb4 --- .../fix-systemd-networkd-enabling-10bf4e5f0903c311.yaml | 6 ++++++ requirements.yml | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/fix-systemd-networkd-enabling-10bf4e5f0903c311.yaml diff --git a/releasenotes/notes/fix-systemd-networkd-enabling-10bf4e5f0903c311.yaml b/releasenotes/notes/fix-systemd-networkd-enabling-10bf4e5f0903c311.yaml new file mode 100644 index 000000000..fba0c0bdf --- /dev/null +++ b/releasenotes/notes/fix-systemd-networkd-enabling-10bf4e5f0903c311.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + Fixes a bug where systemd-networkd was not permanently enabled when the + unit was already in state ``runtime-enabled``. + `LP#2073100 `__ diff --git a/requirements.yml b/requirements.yml index 104207136..629e21dd4 100644 --- a/requirements.yml +++ b/requirements.yml @@ -10,7 +10,7 @@ roles: - src: ahuffman.resolv version: 1.3.1 - src: stackhpc.systemd_networkd - version: v1.0.1 + version: v1.0.6 - src: giovtorres.tuned version: 1.1.0 - src: jriguera.configdrive From ace210f9b59b47faa51b5d6a15dc818fc432460c Mon Sep 17 00:00:00 2001 From: Michal Nasiadka Date: Mon, 10 Jun 2024 14:16:02 +0200 Subject: [PATCH 2/2] seed-vm/infra-vms: Add support for EFI and q35 Bump stackhpc.libvirt-vm to v1.16.1. Change-Id: I88f20112ab4740fe114a6484f88f4fbfb66863e5 (cherry picked from commit 9702736b3ec3c0dc44657b34c90594ccc3c75493) --- ansible/inventory/group_vars/all/infra-vms | 6 +++++ ansible/inventory/group_vars/all/seed-vm | 6 +++++ ansible/roles/infra-vms/tasks/deploy.yml | 2 ++ ansible/roles/infra-vms/tasks/destroy.yml | 1 + ansible/seed-vm-deprovision.yml | 15 +++++++---- ansible/seed-vm-provision.yml | 3 ++- etc/kayobe/infra-vms.yml | 6 +++++ etc/kayobe/seed-vm.yml | 6 +++++ .../kayobe-seed-vm-base/overrides.yml.j2 | 7 ++++++ ...a-vm-boot-fw-machine-096251c45653f98c.yaml | 8 ++++++ requirements.yml | 4 +-- zuul.d/jobs.yaml | 25 +++++++++++++++++++ zuul.d/project.yaml | 2 ++ 13 files changed, 83 insertions(+), 8 deletions(-) create mode 100644 releasenotes/notes/seed-infra-vm-boot-fw-machine-096251c45653f98c.yaml diff --git a/ansible/inventory/group_vars/all/infra-vms b/ansible/inventory/group_vars/all/infra-vms index 3327ed69b..2217ec80f 100644 --- a/ansible/inventory/group_vars/all/infra-vms +++ b/ansible/inventory/group_vars/all/infra-vms @@ -76,6 +76,12 @@ infra_vm_wait_connection_ssh_extra_args: '-o StrictHostKeyChecking=no' # OS family. Needed for config drive generation. infra_vm_os_family: "{{ 'RedHat' if os_distribution in ['centos', 'rocky'] else 'Debian' }}" +# Boot firmware. Possible values are 'bios' or 'efi'. Default is 'bios'. +infra_vm_boot_firmware: "bios" + +# Machine type. Libvirt default configuration is used. +infra_vm_machine: + ############################################################################### # Infrastructure VM node configuration. diff --git a/ansible/inventory/group_vars/all/seed-vm b/ansible/inventory/group_vars/all/seed-vm index 8f63d0e83..953d580fd 100644 --- a/ansible/inventory/group_vars/all/seed-vm +++ b/ansible/inventory/group_vars/all/seed-vm @@ -65,3 +65,9 @@ seed_vm_data_format: qcow2 # List of network interfaces to attach to the seed VM. seed_vm_interfaces: "{{ network_interfaces | sort | map('net_libvirt_vm_network') | list }}" + +# Boot firmware. Possible values are 'bios' or 'efi'. Default is 'bios'. +seed_vm_boot_firmware: "bios" + +# Machine type. Libvirt default configuration is used. +seed_vm_machine: diff --git a/ansible/roles/infra-vms/tasks/deploy.yml b/ansible/roles/infra-vms/tasks/deploy.yml index e51991786..98ad4b28b 100644 --- a/ansible/roles/infra-vms/tasks/deploy.yml +++ b/ansible/roles/infra-vms/tasks/deploy.yml @@ -86,6 +86,8 @@ libvirt_vm_image_cache_path: "{{ image_cache_path }}" libvirt_vms: - name: "{{ vm_name }}" + boot_firmware: "{{ vm_hostvars.infra_vm_boot_firmware | default }}" + machine: "{{ vm_hostvars.infra_vm_machine | default }}" memory_mb: "{{ vm_hostvars.infra_vm_memory_mb }}" vcpus: "{{ vm_hostvars.infra_vm_vcpus }}" volumes: "{{ vm_hostvars.infra_vm_volumes + [vm_configdrive_volume] }}" diff --git a/ansible/roles/infra-vms/tasks/destroy.yml b/ansible/roles/infra-vms/tasks/destroy.yml index a621e4e30..c45b996c7 100644 --- a/ansible/roles/infra-vms/tasks/destroy.yml +++ b/ansible/roles/infra-vms/tasks/destroy.yml @@ -9,6 +9,7 @@ pool: "{{ hostvars[vm_hostvars.infra_vm_hypervisor].infra_vm_pool }}" libvirt_vms: - name: "{{ vm_name }}" + boot_firmware: "{{ vm_hostvars.infra_vm_boot_firmware | default }}" memory_mb: "{{ vm_hostvars.infra_vm_memory_mb }}" vcpus: "{{ vm_hostvars.infra_vm_vcpus }}" volumes: "{{ vm_hostvars.infra_vm_volumes + [infra_vm_configdrive_volume] }}" diff --git a/ansible/seed-vm-deprovision.yml b/ansible/seed-vm-deprovision.yml index 1ed2179e9..9edd634b7 100644 --- a/ansible/seed-vm-deprovision.yml +++ b/ansible/seed-vm-deprovision.yml @@ -8,9 +8,14 @@ seed_vm_configdrive_volume: name: "{{ hostvars[seed_host].seed_vm_name }}-configdrive" pool: "{{ hostvars[seed_host].seed_vm_pool }}" - libvirt_vm_name: "{{ hostvars[seed_host].seed_vm_name }}" - libvirt_vm_memory_mb: "{{ hostvars[seed_host].seed_vm_memory_mb }}" - libvirt_vm_vcpus: "{{ hostvars[seed_host].seed_vm_vcpus }}" - libvirt_vm_volumes: "{{ hostvars[seed_host].seed_vm_volumes + [seed_vm_configdrive_volume] }}" - libvirt_vm_state: "absent" + libvirt_vms: + - name: "{{ hostvars[seed_host].seed_vm_name }}" + boot_firmware: "{{ hostvars[seed_host].seed_vm_boot_firmware | default }}" + machine: "{{ hostvars[seed_host].seed_vm_machine | default }}" + memory_mb: "{{ hostvars[seed_host].seed_vm_memory_mb }}" + vcpus: "{{ hostvars[seed_host].seed_vm_vcpus }}" + volumes: "{{ hostvars[seed_host].seed_vm_volumes + [seed_vm_configdrive_volume] }}" + interfaces: "{{ hostvars[seed_host].seed_vm_interfaces }}" + console_log_enabled: true + state: absent become: True diff --git a/ansible/seed-vm-provision.yml b/ansible/seed-vm-provision.yml index 34ff05891..3fb4f5e4a 100644 --- a/ansible/seed-vm-provision.yml +++ b/ansible/seed-vm-provision.yml @@ -116,12 +116,13 @@ libvirt_vm_image_cache_path: "{{ image_cache_path }}" libvirt_vms: - name: "{{ hostvars[seed_host].seed_vm_name }}" + boot_firmware: "{{ hostvars[seed_host].seed_vm_boot_firmware | default }}" + machine: "{{ hostvars[seed_host].seed_vm_machine | default }}" memory_mb: "{{ hostvars[seed_host].seed_vm_memory_mb }}" vcpus: "{{ hostvars[seed_host].seed_vm_vcpus }}" volumes: "{{ hostvars[seed_host].seed_vm_volumes + [seed_vm_configdrive_volume] }}" interfaces: "{{ hostvars[seed_host].seed_vm_interfaces }}" console_log_enabled: true - tasks: - name: Wait for SSH access to the seed VM local_action: diff --git a/etc/kayobe/infra-vms.yml b/etc/kayobe/infra-vms.yml index 3e1db5d5e..3e4ac3cd2 100644 --- a/etc/kayobe/infra-vms.yml +++ b/etc/kayobe/infra-vms.yml @@ -58,6 +58,12 @@ # OS family. Needed for config drive generation. #infra_vm_os_family: +# Boot firmware. Possible values are 'bios' or 'efi'. Default is 'bios'. +#infra_vm_boot_firmware: + +# Machine type. Libvirt default configuration is used. +#infra_vm_machine: + ############################################################################### # Infrastructure VM node configuration. diff --git a/etc/kayobe/seed-vm.yml b/etc/kayobe/seed-vm.yml index f10fbaa19..5fdcc1690 100644 --- a/etc/kayobe/seed-vm.yml +++ b/etc/kayobe/seed-vm.yml @@ -61,6 +61,12 @@ # #seed_vm_interfaces: +# Boot firmware. Possible values are 'bios' or 'efi'. Default is 'bios'. +#seed_vm_boot_firmware: + +# Machine type. Libvirt default configuration is used. +#seed_vm_machine: + ############################################################################### # Dummy variable to allow Ansible to accept this file. workaround_ansible_issue_8743: yes diff --git a/playbooks/kayobe-seed-vm-base/overrides.yml.j2 b/playbooks/kayobe-seed-vm-base/overrides.yml.j2 index f51bd58e8..854775f77 100644 --- a/playbooks/kayobe-seed-vm-base/overrides.yml.j2 +++ b/playbooks/kayobe-seed-vm-base/overrides.yml.j2 @@ -32,6 +32,13 @@ seed_vm_memory_mb: "{{ 1 * 1024 }}" seed_bootstrap_user: cirros seed_vm_root_image: /opt/cache/files/cirros-0.5.3-x86_64-disk.img +{% if seed_vm_boot_firmware is defined %} +seed_vm_boot_firmware: "{{ seed_vm_boot_firmware }}" +{% endif %} +{% if seed_vm_machine is defined %} +seed_vm_machine: "{{ seed_vm_machine }}" +{% endif %} + # Cirros doesn't load cdom drivers by default. seed_vm_configdrive_device: disk diff --git a/releasenotes/notes/seed-infra-vm-boot-fw-machine-096251c45653f98c.yaml b/releasenotes/notes/seed-infra-vm-boot-fw-machine-096251c45653f98c.yaml new file mode 100644 index 000000000..db4c48a5d --- /dev/null +++ b/releasenotes/notes/seed-infra-vm-boot-fw-machine-096251c45653f98c.yaml @@ -0,0 +1,8 @@ +--- +features: + - | + Adds support for specifying ``boot_firmware`` and ``machine`` variables to + seed and infra VMs. This can be used to launch VMs in UEFI boot mode with + Q35 machine type. + - | + Bumps stackhpc.libvirt-vm Ansible role to ``v1.16.1``. diff --git a/requirements.yml b/requirements.yml index 629e21dd4..32e4acaf0 100644 --- a/requirements.yml +++ b/requirements.yml @@ -36,8 +36,8 @@ roles: version: 1.1.1 - src: stackhpc.libvirt-host version: v1.12.1 - - src: stackhpc.libvirt-vm - version: v1.14.2 + - name: stackhpc.libvirt-vm + version: v1.16.1 - src: stackhpc.luks version: 0.4.2 - src: stackhpc.mellanox-switch diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml index fcb0b54af..2caf7d615 100644 --- a/zuul.d/jobs.yaml +++ b/zuul.d/jobs.yaml @@ -315,6 +315,31 @@ parent: kayobe-seed-vm-base nodeset: kayobe-ubuntu-jammy +- job: + name: kayobe-seed-vm-efi-base + parent: kayobe-seed-vm-base + description: | + Base job for testing seed VM provisioning with EFI and q35 + vars: + seed_vm_boot_firmware: efi + seed_vm_machine: q35 + +- job: + name: kayobe-seed-vm-centos9s-efi + parent: kayobe-seed-vm-efi-base + nodeset: kayobe-centos9s + voting: false + +- job: + name: kayobe-seed-vm-rocky9-efi + parent: kayobe-seed-vm-efi-base + nodeset: kayobe-rocky9 + +- job: + name: kayobe-seed-vm-ubuntu-jammy-efi + parent: kayobe-seed-vm-efi-base + nodeset: kayobe-ubuntu-jammy + - job: name: kayobe-infra-vm-base parent: kayobe-base diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml index d69913966..5c6454f54 100644 --- a/zuul.d/project.yaml +++ b/zuul.d/project.yaml @@ -26,7 +26,9 @@ - kayobe-seed-upgrade-rocky9 - kayobe-seed-upgrade-ubuntu-jammy - kayobe-seed-vm-rocky9 + - kayobe-seed-vm-rocky9-efi - kayobe-seed-vm-ubuntu-jammy + - kayobe-seed-vm-ubuntu-jammy-efi - kayobe-infra-vm-rocky9 - kayobe-infra-vm-ubuntu-jammy