From b8bb880f769025e60fa2a794b13ef58b38a940db Mon Sep 17 00:00:00 2001 From: Jed Preist Date: Tue, 7 Jul 2026 09:21:04 +0100 Subject: [PATCH 1/6] CI: Emulate Redfish baremetal with Tenks Emulate baremetal using Tenks to test the deployment of Redfish baremetal with Ironic. Depends-On: https://review.opendev.org/c/openstack/tenks/+/995697 Change-Id: I8e75b5e9b56586ced9c0a9d88bb80a8535397f50 Signed-off-by: Jed Preist --- dev/overcloud-test-baremetal.sh | 2 ++ dev/overcloud-test-inspect.sh | 3 ++ ...-deploy-config-compute-libvirt-on-host.yml | 29 ++++++++++++++++++- dev/tenks-deploy-config-compute.yml | 29 ++++++++++++++++++- playbooks/kayobe-overcloud-base/baremetal.j2 | 1 + .../kayobe-overcloud-upgrade-base/run.yml | 6 ++++ 6 files changed, 68 insertions(+), 2 deletions(-) diff --git a/dev/overcloud-test-baremetal.sh b/dev/overcloud-test-baremetal.sh index 3c99055e4..602b2bf41 100755 --- a/dev/overcloud-test-baremetal.sh +++ b/dev/overcloud-test-baremetal.sh @@ -11,6 +11,8 @@ source "${PARENT}/functions" function main { config_init overcloud_test bm1 test-rc provision-net + # Test Redfish as well + overcloud_test bm2 test-rc-red provision-net } main diff --git a/dev/overcloud-test-inspect.sh b/dev/overcloud-test-inspect.sh index ea6aec667..b603b1911 100755 --- a/dev/overcloud-test-inspect.sh +++ b/dev/overcloud-test-inspect.sh @@ -10,6 +10,9 @@ source "${PARENT}/functions" function main { config_init + # Test Redfish as well + overcloud_test_inspect red0 + overcloud_test_inspect tk0 } diff --git a/dev/tenks-deploy-config-compute-libvirt-on-host.yml b/dev/tenks-deploy-config-compute-libvirt-on-host.yml index 53f53d325..158ac9288 100644 --- a/dev/tenks-deploy-config-compute-libvirt-on-host.yml +++ b/dev/tenks-deploy-config-compute-libvirt-on-host.yml @@ -9,7 +9,8 @@ node_types: volumes: # There is a minimum disk space capacity requirement of 4GiB when using Ironic Python Agent: # https://github.com/openstack/ironic-python-agent/blob/master/ironic_python_agent/utils.py#L290 - - capacity: 4GiB + # The cloud image seems to fill a 4GiB disk, so allow 6. + - capacity: 6GiB physical_networks: - physnet1 console_log_enabled: true @@ -19,6 +20,24 @@ node_types: # Stream IPA doesn't fail with "Fatal glibc error: CPU does not support # x86-64-v2". cpu_mode: maximum + type1: + memory_mb: 3072 + vcpus: 1 + volumes: + # There is a minimum disk space capacity requirement of 4GiB when using Ironic Python Agent: + # https://github.com/openstack/ironic-python-agent/blob/master/ironic_python_agent/utils.py#L290 + # The cloud image seems to fill a 4GiB disk, so allow 6. + - capacity: 6GiB + physical_networks: + - physnet1 + console_log_enabled: true + # We seem to hit issues with missing cpu features in CI as a result of using host-model, e.g: + # https://zuul.opendev.org/t/openstack/build/02c33ab51664419a88a5a54ad22852a9/log/primary/system_logs/libvirt/qemu/tk0.txt.gz#38 + # NOTE(bbezak): Force QEMU to expose x86-64‑v2 features, so the CentOS + # Stream IPA doesn't fail with "Fatal glibc error: CPU does not support + # x86-64-v2". + cpu_mode: maximum + ironic_driver: redfish specs: - type: type0 @@ -26,10 +45,18 @@ specs: ironic_config: resource_class: test-rc network_interface: flat + - type: type1 + count: 1 + node_name_prefix: red + ironic_config: + resource_class: test-rc-red + network_interface: flat nova_flavors: - resource_class: test-rc node_type: type0 + - resource_class: test-rc-red + node_type: type1 physnet_mappings: physnet1: breth1 diff --git a/dev/tenks-deploy-config-compute.yml b/dev/tenks-deploy-config-compute.yml index feb46439a..bd53f78c9 100644 --- a/dev/tenks-deploy-config-compute.yml +++ b/dev/tenks-deploy-config-compute.yml @@ -9,7 +9,8 @@ node_types: volumes: # There is a minimum disk space capacity requirement of 4GiB when using Ironic Python Agent: # https://github.com/openstack/ironic-python-agent/blob/master/ironic_python_agent/utils.py#L290 - - capacity: 4GiB + # The cloud image seems to fill a 4GiB disk, so allow 6. + - capacity: 6GiB physical_networks: - physnet1 console_log_enabled: true @@ -19,6 +20,24 @@ node_types: # Stream IPA doesn't fail with "Fatal glibc error: CPU does not support # x86-64-v2". cpu_mode: maximum + type1: + memory_mb: 3072 + vcpus: 1 + volumes: + # There is a minimum disk space capacity requirement of 4GiB when using Ironic Python Agent: + # https://github.com/openstack/ironic-python-agent/blob/master/ironic_python_agent/utils.py#L290 + # The cloud image seems to fill a 4GiB disk, so allow 6. + - capacity: 6GiB + physical_networks: + - physnet1 + console_log_enabled: true + # We seem to hit issues with missing cpu features in CI as a result of using host-model, e.g: + # https://zuul.opendev.org/t/openstack/build/02c33ab51664419a88a5a54ad22852a9/log/primary/system_logs/libvirt/qemu/tk0.txt.gz#38 + # NOTE(bbezak): Force QEMU to expose x86-64‑v2 features, so the CentOS + # Stream IPA doesn't fail with "Fatal glibc error: CPU does not support + # x86-64-v2". + cpu_mode: maximum + ironic_driver: redfish specs: - type: type0 @@ -26,10 +45,18 @@ specs: ironic_config: resource_class: test-rc network_interface: flat + - type: type1 + count: 1 + node_name_prefix: red + ironic_config: + resource_class: test-rc-red + network_interface: flat nova_flavors: - resource_class: test-rc node_type: type0 + - resource_class: test-rc-red + node_type: type1 physnet_mappings: physnet1: breth1 diff --git a/playbooks/kayobe-overcloud-base/baremetal.j2 b/playbooks/kayobe-overcloud-base/baremetal.j2 index 47920424d..131639eb3 100644 --- a/playbooks/kayobe-overcloud-base/baremetal.j2 +++ b/playbooks/kayobe-overcloud-base/baremetal.j2 @@ -2,3 +2,4 @@ hv100 tk0 tk1 +red0 diff --git a/playbooks/kayobe-overcloud-upgrade-base/run.yml b/playbooks/kayobe-overcloud-upgrade-base/run.yml index 820536979..123d5686b 100644 --- a/playbooks/kayobe-overcloud-upgrade-base/run.yml +++ b/playbooks/kayobe-overcloud-upgrade-base/run.yml @@ -90,6 +90,12 @@ cmd: "{{ kayobe_src_dir }}/dev/overcloud-upgrade.sh &> {{ logs_dir }}/ansible/overcloud-upgrade" executable: /bin/bash + # Upgrading restarts libvirt, which breaks sushy-emulator. + - name: Restart sushy-emulator + shell: + cmd: "systemctl restart sushy_emulator.service" + become: true + # Remove unused Docker images to avoid reaching full disk - name: Remove unused Docker images shell: From 65cc58144a50e86a861bd1e7eafe5d055eebb755 Mon Sep 17 00:00:00 2001 From: Leonie Chamberlin-Medd Date: Thu, 16 Jul 2026 10:39:43 +0100 Subject: [PATCH 2/6] Add missing reconfigure.yml for manage-containers Closes-Bug: #2160941 Change-Id: I5c99da4c4ecc4995a31e96ffc9de4fe2620cdecb Signed-off-by: Leonie Chamberlin-Medd --- ansible/roles/manage-containers/tasks/reconfigure.yml | 2 ++ .../notes/add-missing-reconfigure.yml-59284aa138189c9a.yaml | 6 ++++++ 2 files changed, 8 insertions(+) create mode 100644 ansible/roles/manage-containers/tasks/reconfigure.yml create mode 100644 releasenotes/notes/add-missing-reconfigure.yml-59284aa138189c9a.yaml diff --git a/ansible/roles/manage-containers/tasks/reconfigure.yml b/ansible/roles/manage-containers/tasks/reconfigure.yml new file mode 100644 index 000000000..f670a5b78 --- /dev/null +++ b/ansible/roles/manage-containers/tasks/reconfigure.yml @@ -0,0 +1,2 @@ +--- +- include_tasks: deploy.yml diff --git a/releasenotes/notes/add-missing-reconfigure.yml-59284aa138189c9a.yaml b/releasenotes/notes/add-missing-reconfigure.yml-59284aa138189c9a.yaml new file mode 100644 index 000000000..1d9eb29f4 --- /dev/null +++ b/releasenotes/notes/add-missing-reconfigure.yml-59284aa138189c9a.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + Fixes an error in the manage-containers role that occurred when running + ``kayobe overcloud service reconfigure``. + `LP#2160941 `__ From 22430b0bb643d023a18d9a63691129d901dc3aa3 Mon Sep 17 00:00:00 2001 From: Leonie Chamberlin-Medd Date: Tue, 14 Jul 2026 13:48:44 +0100 Subject: [PATCH 3/6] Add note regarding --use-test-images flag When running Kayobe commands, you should pass the --use-test-images flags to allow for the Kolla test images to be used. Change-Id: Id42974e99e07a2f9c269e0559f38858b5e334ded Signed-off-by: Leonie Chamberlin-Medd --- doc/source/contributor/automated.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/source/contributor/automated.rst b/doc/source/contributor/automated.rst index 316588b4a..42eeb8f23 100644 --- a/doc/source/contributor/automated.rst +++ b/doc/source/contributor/automated.rst @@ -144,6 +144,13 @@ plane:: Upon successful completion of this script, the control plane will be active. +.. note:: + + When running Kayobe commands, such as ``kayobe overcloud service deploy``, it + is important to use the ``--use-test-images`` flag to enable the use of Kolla + test images. This is due to the fact that the Kolla images used are from the + quay.io/openstack.kolla namespace, which are meant for testing purposes only. + Testing ------- From 2c714a5a43864e6407e6c44d12f7da54e0cf9141 Mon Sep 17 00:00:00 2001 From: Pierre Riteau Date: Tue, 21 Jul 2026 09:58:20 +0200 Subject: [PATCH 4/6] CI: Install kernel-modules-extra This is required to fix various firewall configuration issues, such as: sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: No such file or directory Change-Id: I94d3a989932f5b70b05d512df1a4d319b01b3bd9 Signed-off-by: Pierre Riteau --- roles/kayobe-ci-prep/tasks/main.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/roles/kayobe-ci-prep/tasks/main.yml b/roles/kayobe-ci-prep/tasks/main.yml index 942a1988a..faea392e8 100644 --- a/roles/kayobe-ci-prep/tasks/main.yml +++ b/roles/kayobe-ci-prep/tasks/main.yml @@ -62,5 +62,10 @@ - openssl-devel when: not kayobe_control_host_become | bool + - name: Install kernel-modules-extra for running kernel + ansible.builtin.dnf: + name: "kernel-modules-extra" + state: present + when: ansible_facts.os_family == 'RedHat' become: true From 45d22bf0e45ab76945700c7c6da15bf66193e0bf Mon Sep 17 00:00:00 2001 From: Rafal Lewandowski Date: Fri, 17 Jul 2026 14:15:53 +0200 Subject: [PATCH 5/6] Remove leftover device mapper references from the code Closes-Bug: #2096784 Change-Id: I3717723a9213617272e9ae97664d4ad8febc0aab Signed-off-by: Rafal Lewandowski --- .../inventory/group_vars/all/container-engine | 16 ---------------- etc/kayobe/container-engine.yml | 16 ---------------- 2 files changed, 32 deletions(-) diff --git a/ansible/inventory/group_vars/all/container-engine b/ansible/inventory/group_vars/all/container-engine index d74e6b4d3..29f7b3106 100644 --- a/ansible/inventory/group_vars/all/container-engine +++ b/ansible/inventory/group_vars/all/container-engine @@ -15,22 +15,6 @@ container_engine_volumes_path: "{{ podman_volumes_path if container_engine == 'p # Name of the docker storage driver. Default is 'overlay2'. docker_storage_driver: overlay2 -# Name of the docker storage LVM volume group. -docker_storage_volume_group: data - -# Name of the docker storage data LVM volume. -docker_storage_volume_thinpool: docker-thinpool - -# Size of the docker storage data LVM volume (see lvol module size argument). -docker_storage_volume_thinpool_size: 20%VG - -# Name of the docker storage metadata LVM volume. -docker_storage_volume_thinpool_meta: docker-thinpoolmeta - -# Size of the docker storage metadata LVM volume (see lvol module size -# argument). -docker_storage_volume_thinpool_meta_size: 1%VG - # URL of docker registry docker_registry: diff --git a/etc/kayobe/container-engine.yml b/etc/kayobe/container-engine.yml index 8bb696819..48ea969b3 100644 --- a/etc/kayobe/container-engine.yml +++ b/etc/kayobe/container-engine.yml @@ -15,22 +15,6 @@ # Name of the docker storage driver. Default is 'overlay2'. #docker_storage_driver: -# Name of the docker storage LVM volume group. -#docker_storage_volume_group: - -# Name of the docker storage data LVM volume. -#docker_storage_volume_thinpool: - -# Size of the docker storage data LVM volume (see lvol module size argument). -#docker_storage_volume_thinpool_size: - -# Name of the docker storage metadata LVM volume. -#docker_storage_volume_thinpool_meta: - -# Size of the docker storage metadata LVM volume (see lvol module size -# argument). -#docker_storage_volume_thinpool_meta_size: - # URL of docker registry #docker_registry: From eef7ec67df076d7da58f43937a088b0fb1b5d8fb Mon Sep 17 00:00:00 2001 From: Seunghun Lee Date: Thu, 23 Jul 2026 11:52:22 +0100 Subject: [PATCH 6/6] Make httpd image buildable From [1], Kolla added an httpd image. It is used by ironic, keystone and letsencrypt [2][3][4]. Added httpd to ``overcloud_container_image_regex_map`` to make it buildable. The httpd image will be included in an image build when ironic or keystone or letsencrypt are enabled. [1] https://review.opendev.org/c/openstack/kolla/+/954707 [2] https://review.opendev.org/c/openstack/kolla-ansible/+/986483 [3] https://review.opendev.org/c/openstack/kolla-ansible/+/962083 [4] https://review.opendev.org/c/openstack/kolla-ansible/+/986352 Closes-Bug: #2161615 Change-Id: I59e87a738558a9a5e7b48c2cb4bb00ec71a8e518 Signed-off-by: Seunghun Lee --- ansible/inventory/group_vars/all/kolla | 2 ++ .../make-httpd-buildable-8e459a51224966c0.yaml | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 releasenotes/notes/make-httpd-buildable-8e459a51224966c0.yaml diff --git a/ansible/inventory/group_vars/all/kolla b/ansible/inventory/group_vars/all/kolla index 329929105..6a104abf1 100644 --- a/ansible/inventory/group_vars/all/kolla +++ b/ansible/inventory/group_vars/all/kolla @@ -174,6 +174,8 @@ overcloud_container_image_regex_map: enabled: "{{ kolla_enable_heat | bool }}" - regex: ^horizon enabled: "{{ kolla_enable_horizon | bool }}" + - regex: ^httpd + enabled: "{{ kolla_enable_ironic | bool or kolla_enable_keystone | bool or kolla_enable_letsencrypt | bool }}" - regex: ^ironic enabled: "{{ kolla_enable_ironic | bool }}" - regex: ironic-neutron-agent diff --git a/releasenotes/notes/make-httpd-buildable-8e459a51224966c0.yaml b/releasenotes/notes/make-httpd-buildable-8e459a51224966c0.yaml new file mode 100644 index 000000000..5c199426f --- /dev/null +++ b/releasenotes/notes/make-httpd-buildable-8e459a51224966c0.yaml @@ -0,0 +1,16 @@ +--- +fixes: + - | + Fixes a bug where the httpd image does not get built with ``kayobe + overcloud container image build``. + `LP#2161615 `__ + + This image was introduced in Kolla from `change 954707 + `__. + + The httpd image will be built by default when any of following variables + are set to true: + + * kolla_enable_ironic + * kolla_enable_keystone + * kolla_enable_letsencrypt