From b57b94bbad4333020cc6906d124d6f01f75e1e2c Mon Sep 17 00:00:00 2001
From: Mark Goddard <mark@stackhpc.com>
Date: Thu, 3 Feb 2022 13:57:46 +0000
Subject: [PATCH] CI: test ironic UEFI boot mode in overcloud TLS jobs

Set the Ironic boot mode to legacy BIOS explicitly in Tenks config in
anticipation of an upcoming change to the default boot mode.

Override the boot mode to UEFI in the overcloud TLS job to improve
coverage. This requires enabling iPXE booting.

Depends-On: https://review.opendev.org/c/openstack/tenks/+/827479/

Change-Id: Id1b4e9775c834b8b97e086241ee8b247977225a2
---
 dev/tenks-deploy-config-compute.yml              | 2 ++
 dev/tenks-deploy-config-overcloud.yml            | 2 ++
 playbooks/kayobe-overcloud-base/overrides.yml.j2 | 7 +++++++
 playbooks/kayobe-overcloud-base/pre.yml          | 7 +++++++
 zuul.d/jobs.yaml                                 | 2 ++
 5 files changed, 20 insertions(+)

diff --git a/dev/tenks-deploy-config-compute.yml b/dev/tenks-deploy-config-compute.yml
index c4008377..0f859ccd 100644
--- a/dev/tenks-deploy-config-compute.yml
+++ b/dev/tenks-deploy-config-compute.yml
@@ -34,6 +34,8 @@ physnet_mappings:
 deploy_kernel: ipa.kernel
 deploy_ramdisk: ipa.initramfs
 
+default_boot_mode: "bios"
+
 # Use the libvirt daemon deployed by Kolla Ansible in the nova_libvirt
 # container. Tenks will install libvirt client packages.
 libvirt_host_install_daemon: false
diff --git a/dev/tenks-deploy-config-overcloud.yml b/dev/tenks-deploy-config-overcloud.yml
index 7d54961d..521f7d03 100644
--- a/dev/tenks-deploy-config-overcloud.yml
+++ b/dev/tenks-deploy-config-overcloud.yml
@@ -34,6 +34,8 @@ physnet_mappings:
 
 bridge_type: linuxbridge
 
+default_boot_mode: "bios"
+
 # No placement service.
 wait_for_placement: false
 
diff --git a/playbooks/kayobe-overcloud-base/overrides.yml.j2 b/playbooks/kayobe-overcloud-base/overrides.yml.j2
index 1980c2bd..ba970bc5 100644
--- a/playbooks/kayobe-overcloud-base/overrides.yml.j2
+++ b/playbooks/kayobe-overcloud-base/overrides.yml.j2
@@ -33,6 +33,13 @@ aio_bridge_ports:
 # Enable ironic for testing baremetal compute.
 kolla_enable_ironic: true
 
+{% if ironic_boot_mode == 'uefi' %}
+# iPXE is currently required for UEFI boot mode in Kolla Ansible.
+kolla_enable_ironic_ipxe: true
+kolla_ironic_enabled_boot_interfaces: [ipxe]
+kolla_ironic_default_boot_interface: ipxe
+{% endif %}
+
 {% if tls_enabled %}
 kolla_enable_tls_external: "yes"
 kolla_enable_tls_internal: "yes"
diff --git a/playbooks/kayobe-overcloud-base/pre.yml b/playbooks/kayobe-overcloud-base/pre.yml
index 2694c758..f696974b 100644
--- a/playbooks/kayobe-overcloud-base/pre.yml
+++ b/playbooks/kayobe-overcloud-base/pre.yml
@@ -25,6 +25,13 @@
         src: globals.yml.j2
         dest: "{{ kayobe_config_src_dir }}/etc/kayobe/kolla/globals.yml"
 
+    - name: Configure Tenks to use UEFI boot mode
+      replace:
+        path: "{{ kayobe_src_dir }}/dev/tenks-deploy-config-compute.yml"
+        regexp: '^default_boot_mode: .*$'
+        replace: 'default_boot_mode: "uefi"'
+      when: ironic_boot_mode == 'uefi'
+
     - name: Ensure kayobe is installed
       shell:
         cmd: dev/install.sh &> {{ logs_dir }}/ansible/install
diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml
index 426a763f..61905ed5 100644
--- a/zuul.d/jobs.yaml
+++ b/zuul.d/jobs.yaml
@@ -83,6 +83,7 @@
       tenks_src_dir: "{{ ansible_env.PWD ~ '/' ~ zuul.projects['opendev.org/openstack/tenks'].src_dir }}"
       is_upgrade: "{{ 'upgrade' in zuul.job }}"
       tls_enabled: false
+      ironic_boot_mode: "bios"
 
 - job:
     name: kayobe-overcloud-base
@@ -110,6 +111,7 @@
     parent: kayobe-overcloud-base
     vars:
       tls_enabled: true
+      ironic_boot_mode: "uefi"
 
 - job:
     name: kayobe-overcloud-tls-centos8s
-- 
GitLab