diff --git a/ansible/inventory/group_vars/all/openstack b/ansible/inventory/group_vars/all/openstack index be905c902..430293d3f 100644 --- a/ansible/inventory/group_vars/all/openstack +++ b/ansible/inventory/group_vars/all/openstack @@ -2,10 +2,10 @@ ############################################################################### # OpenStack release configuration. -# Name of the current OpenStack release. Default is "2026.2". -openstack_release: "2026.2" +# Name of the current OpenStack release. Default is "master". +openstack_release: "master" -# Name of the current OpenStack branch. Default is "stable/2026.2". +# Name of the current OpenStack branch. Default is "master". openstack_branch: >- {% if openstack_release != 'master' %}stable/{% endif %}{{ openstack_release | lower }} diff --git a/ansible/public-openrc.yml b/ansible/public-openrc.yml deleted file mode 100644 index 412c2cd19..000000000 --- a/ansible/public-openrc.yml +++ /dev/null @@ -1,16 +0,0 @@ ---- -# Generate an environment file for interacting with the public OpenStack APIs -# as the admin user in the admin project. - -- name: Ensure a public OpenStack API environment file exists - hosts: localhost - tags: - - public-openrc - vars: - public_api_proto: "{% if kolla_enable_tls_external | bool %}https{% else %}http{% endif %}" - public_api_host: "{{ kolla_external_fqdn or kolla_internal_fqdn }}" - public_api_keystone_port: 5000 - roles: - - role: public-openrc - public_openrc_kolla_config_path: "{{ kolla_config_path }}" - public_openrc_auth_url: "{{ public_api_proto }}://{{ public_api_host }}:{{ public_api_keystone_port }}" diff --git a/ansible/roles/public-openrc/defaults/main.yml b/ansible/roles/public-openrc/defaults/main.yml deleted file mode 100644 index db15f1a61..000000000 --- a/ansible/roles/public-openrc/defaults/main.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- -# Path to kolla configuration directory. -public_openrc_kolla_config_path: - -# URL of public keystone API to use for authentication. -public_openrc_auth_url: diff --git a/ansible/roles/public-openrc/tasks/main.yml b/ansible/roles/public-openrc/tasks/main.yml deleted file mode 100644 index baee4d995..000000000 --- a/ansible/roles/public-openrc/tasks/main.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -- name: Read the admin OpenStack API environment file - slurp: - src: "{{ kolla_config_path }}/admin-openrc.sh" - register: admin_openrc - when: (kolla_config_path ~ '/admin-openrc.sh') is exists - -- name: Ensure a public OpenStack API environment file exists - template: - src: public-openrc.sh.j2 - dest: "{{ public_openrc_kolla_config_path }}/public-openrc.sh" - when: admin_openrc is not skipped diff --git a/ansible/roles/public-openrc/templates/public-openrc.sh.j2 b/ansible/roles/public-openrc/templates/public-openrc.sh.j2 deleted file mode 100644 index e0c5e400b..000000000 --- a/ansible/roles/public-openrc/templates/public-openrc.sh.j2 +++ /dev/null @@ -1,22 +0,0 @@ -# {{ kayobe_managed }} - -{% for line in (admin_openrc.content | b64decode).splitlines() %} -{% if "export OS_AUTH_URL" in line %} -export OS_AUTH_URL={{ public_openrc_auth_url }} -{% elif "export OS_INTERFACE" in line %} -export OS_INTERFACE=public -{% elif "export OS_ENDPOINT_TYPE" in line %} -export OS_ENDPOINT_TYPE=publicURL -{% elif "export OS_MANILA_ENDPOINT_TYPE" in line %} -export OS_MANILA_ENDPOINT_TYPE=publicURL -{% elif "export OS_MISTRAL_ENDPOINT_TYPE" in line %} -export OS_MISTRAL_ENDPOINT_TYPE=publicURL -{% elif "export OS_CACERT" in line %} -{# NOTE(bbezak): drop admin OS_CACERT; public-openrc sets its own. -#} -{% else %} -{{ line }} -{% endif %} -{% endfor %} -{% if kolla_public_openrc_cacert is not none %} -export OS_CACERT={{ kolla_public_openrc_cacert }} -{% endif %} diff --git a/dev/functions b/dev/functions index 2a282a819..7c70753d3 100644 --- a/dev/functions +++ b/dev/functions @@ -692,6 +692,34 @@ function overcloud_test_inspect { openstack baremetal node provide "$node" --wait } +function overcloud_test_wait_for_volume { + # Wait for a volume to become available. Arguments: + # $1: The name of the volume. + set -eu + + local volume="$1" + local attempts=30 + local status + + for i in $(seq 1 $attempts); do + status=$(openstack volume show "$volume" -f value -c status) + if [[ $status = available ]]; then + echo "$volume: Volume is available" + return 0 + elif [[ $status = error ]]; then + echo "$volume: Volume is in the error state" + openstack volume show "$volume" + return 1 + fi + echo "$volume: Volume is $status - retrying" + sleep 10 + done + + echo "$volume: Volume did not become available after $attempts attempts" + openstack volume show "$volume" + return 1 +} + function overcloud_test { set -eu @@ -699,6 +727,8 @@ function overcloud_test { name="$1" flavor="$2" network="$3" + # Boot the server from a Cinder volume rather than from the image. + boot_from_volume="${4:-false}" node_config="{ 'name': '$name', 'flavor': '$flavor', 'network': '$network' }" @@ -708,7 +738,14 @@ function overcloud_test { echo "Performing a simple smoke test with node config: $node_config" echo "$name: Creating a server" - openstack server create --wait --image cirros --flavor "$flavor" --key-name mykey --network "$network" "$name" + if [[ $boot_from_volume = true ]]; then + echo "$name: Creating a bootable volume from the cirros image" + openstack volume create --image cirros --size 1 "${name}-volume" + overcloud_test_wait_for_volume "${name}-volume" + openstack server create --wait --volume "${name}-volume" --flavor "$flavor" --key-name mykey --network "$network" "$name" + else + openstack server create --wait --image cirros --flavor "$flavor" --key-name mykey --network "$network" "$name" + fi echo "$name: Server created" openstack server show "$name" status=$(openstack server show "$name" -f value -c status) @@ -760,6 +797,12 @@ function overcloud_test { echo "$name: Deleting the Node" openstack server delete --wait "$name" + + if [[ $boot_from_volume = true ]]; then + echo "$name: Deleting the volume" + overcloud_test_wait_for_volume "${name}-volume" + openstack volume delete "${name}-volume" + fi } function write_bifrost_clouds_yaml { diff --git a/dev/overcloud-init.sh b/dev/overcloud-init.sh new file mode 100755 index 000000000..7d52771eb --- /dev/null +++ b/dev/overcloud-init.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +set -eu +set -o pipefail + +PARENT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +source "${PARENT}/functions" + + +function main { + config_init + overcloud_test_init +} + +main diff --git a/dev/overcloud-test-vm.sh b/dev/overcloud-test-vm.sh index 44c37d8ca..a4a5e98b5 100755 --- a/dev/overcloud-test-vm.sh +++ b/dev/overcloud-test-vm.sh @@ -11,6 +11,10 @@ source "${PARENT}/functions" function main { config_init overcloud_test vm1 m1.tiny demo-net + if is_cinder_enabled; then + # Boot a server from a Cinder volume to test the block storage backend. + overcloud_test vm2 m1.tiny demo-net true + fi } main diff --git a/etc/kayobe/openstack.yml b/etc/kayobe/openstack.yml index d4a919d40..1acfd0756 100644 --- a/etc/kayobe/openstack.yml +++ b/etc/kayobe/openstack.yml @@ -2,10 +2,10 @@ ############################################################################### # OpenStack release configuration. -# Name of the current OpenStack release. Default is "2026.2". +# Name of the current OpenStack release. Default is "master". #openstack_release: -# Name of the current OpenStack branch. Default is "stable/2026.2". +# Name of the current OpenStack branch. Default is "master". #openstack_branch: ############################################################################### diff --git a/kayobe/cli/commands.py b/kayobe/cli/commands.py index 49e0dccd4..1e365bc5e 100644 --- a/kayobe/cli/commands.py +++ b/kayobe/cli/commands.py @@ -265,8 +265,7 @@ class ControlHostBootstrap(KayobeAnsibleMixin, KollaAnsibleMixin, VaultMixin, * Downloads and installs Ansible roles from Galaxy. * Generates an SSH key for the Ansible control host, if one does not exist. * Installs kolla-ansible on the Ansible control host. - * Generates admin-openrc.sh and public-openrc.sh files when passwords.yml - exists. + * Generates openrc files when passwords.yml exists. """ def get_parser(self, prog_name): @@ -330,15 +329,9 @@ def take_action(self, parsed_args): if passwords_exist: # If we are bootstrapping a control host for an existing - # environment, we should also generate the admin-openrc.sh and - # public-openrc.sh scripts that provide admin credentials. - + # environment, we should also generate the openrc scripts that + # provide admin credentials. self.run_kolla_ansible_overcloud(parsed_args, "post-deploy") - # Create an environment file for accessing the public API as the - # admin user. - playbooks = _build_playbook_list("public-openrc") - self.run_kayobe_playbooks(parsed_args, playbooks, - ignore_limit=True) if parsed_args.add_known_hosts: self.app.LOG.debug("Adding to known_hosts") @@ -1784,10 +1777,6 @@ def take_action(self, parsed_args): # Post-deployment configuration. self.run_kolla_ansible_overcloud(parsed_args, "post-deploy") - # Create an environment file for accessing the public API as the admin - # user. - playbooks = _build_playbook_list("public-openrc") - self.run_kayobe_playbooks(parsed_args, playbooks, ignore_limit=True) class OvercloudServiceDeployContainers(KollaAnsibleMixin, KayobeAnsibleMixin, @@ -1940,10 +1929,6 @@ def take_action(self, parsed_args): # Post-deployment configuration. self.run_kolla_ansible_overcloud(parsed_args, "post-deploy") - # Create an environment file for accessing the public API as the admin - # user. - playbooks = _build_playbook_list("public-openrc") - self.run_kayobe_playbooks(parsed_args, playbooks, ignore_limit=True) class OvercloudServiceStop(KollaAnsibleMixin, KayobeAnsibleMixin, VaultMixin, @@ -2049,10 +2034,6 @@ def take_action(self, parsed_args): # Post-deployment configuration. self.run_kolla_ansible_overcloud(parsed_args, "post-deploy") - # Create an environment file for accessing the public API as the admin - # user. - playbooks = _build_playbook_list("public-openrc") - self.run_kayobe_playbooks(parsed_args, playbooks, ignore_limit=True) class OvercloudServiceDestroy(KollaAnsibleMixin, KayobeAnsibleMixin, diff --git a/kayobe/tests/unit/cli/test_commands.py b/kayobe/tests/unit/cli/test_commands.py index a92c33cce..8fd8750be 100644 --- a/kayobe/tests/unit/cli/test_commands.py +++ b/kayobe/tests/unit/cli/test_commands.py @@ -207,11 +207,6 @@ def test_control_host_bootstrap_with_passwords( ignore_limit=True, check=False, ), - mock.call( - mock.ANY, - [utils.get_data_files_path("ansible", "public-openrc.yml")], - ignore_limit=True - ), ] self.assertListEqual(expected_calls, mock_run.call_args_list) @@ -1880,13 +1875,6 @@ def test_overcloud_service_deploy(self, mock_kolla_run, mock_run): "manage_containers_target_hosts": "overcloud", }, ), - mock.call( - mock.ANY, - [ - utils.get_data_files_path("ansible", "public-openrc.yml"), - ], - ignore_limit=True, - ), ] self.assertListEqual(expected_calls, mock_run.call_args_list) @@ -2047,13 +2035,6 @@ def test_overcloud_service_reconfigure(self, mock_kolla_run, mock_run): "manage_containers_target_hosts": "overcloud", }, ), - mock.call( - mock.ANY, - [ - utils.get_data_files_path("ansible", "public-openrc.yml"), - ], - ignore_limit=True, - ), ] self.assertListEqual(expected_calls, mock_run.call_args_list) @@ -2182,14 +2163,6 @@ def test_overcloud_service_upgrade(self, mock_kolla_run, mock_run): "manage_containers_target_hosts": "overcloud", } ), - mock.call( - mock.ANY, - [ - utils.get_data_files_path("ansible", - "public-openrc.yml"), - ], - ignore_limit=True, - ), ] self.assertListEqual(expected_calls, mock_run.call_args_list) diff --git a/kayobe/tests/unit/test_vault.py b/kayobe/tests/unit/test_vault.py index 50a681df5..7042becb6 100644 --- a/kayobe/tests/unit/test_vault.py +++ b/kayobe/tests/unit/test_vault.py @@ -143,6 +143,6 @@ def test_update_environment_file_env(self, mock_read): parsed_args = parser.parse_args([]) env = {"ANSIBLE_VAULT_PASSWORD_FILE": "/path/to/file"} vault.update_environment(parsed_args, env) - self.assertEqual({"KAYOBE_VAULT_PASSWORD": "test-pass", - "ANSIBLE_VAULT_PASSWORD_FILE": "/path/to/file"}, env) + # ANSIBLE_VAULT_PASSWORD_FILE should be removed to avoid conflicts + self.assertEqual({"KAYOBE_VAULT_PASSWORD": "test-pass"}, env) mock_read.assert_called_once_with("/path/to/file") diff --git a/kayobe/vault.py b/kayobe/vault.py index 3a4d32b9b..366e2d042 100644 --- a/kayobe/vault.py +++ b/kayobe/vault.py @@ -164,6 +164,9 @@ def update_environment(parsed_args, env): if VAULT_PASSWORD_FILE_ENV in os.environ: vault_password = _read_vault_password_file( os.environ[VAULT_PASSWORD_FILE_ENV]) + # Remove ANSIBLE_VAULT_PASSWORD_FILE from environment to avoid + # conflicts when ansible-vault is called with --vault-password-file + env.pop(VAULT_PASSWORD_FILE_ENV, None) elif parsed_args.ask_vault_pass: vault_password = _ask_vault_pass() elif parsed_args.vault_password_file: diff --git a/playbooks/kayobe-ansible-control-host-configure-base/pre.yml b/playbooks/kayobe-ansible-control-host-configure-base/pre.yml index 41690184f..aaa8813b1 100644 --- a/playbooks/kayobe-ansible-control-host-configure-base/pre.yml +++ b/playbooks/kayobe-ansible-control-host-configure-base/pre.yml @@ -28,12 +28,12 @@ # NOTE(mgoddard): Create two loopback devices backed by files. These will # be added to a software RAID volume, then added to an LVM volume group. - - name: Ensure a docker storage backing file exists - command: truncate -s 2G /tmp/docker-storage{{ item }} + - name: Ensure a storage backing file exists + command: truncate -s 2G /tmp/storage{{ item }} loop: [0, 1] - - name: Ensure the docker storage loopback device is created - command: losetup /dev/loop{{ item }} /tmp/docker-storage{{ item }} + - name: Ensure the storage loopback device is created + command: losetup /dev/loop{{ item }} /tmp/storage{{ item }} become: true loop: [0, 1] diff --git a/playbooks/kayobe-overcloud-base/overrides.yml.j2 b/playbooks/kayobe-overcloud-base/overrides.yml.j2 index 5151919f7..ee83661fb 100644 --- a/playbooks/kayobe-overcloud-base/overrides.yml.j2 +++ b/playbooks/kayobe-overcloud-base/overrides.yml.j2 @@ -48,6 +48,13 @@ kolla_enable_horizon: false # Enable Mariabackup for testing database backups kolla_enable_mariabackup: true +# Enable Cinder with an NFS backend to test block storage. +kolla_enable_cinder: true +kolla_enable_cinder_backend_nfs: true + +# Cinder backup defaults to the Ceph driver, and no Ceph cluster is deployed. +kolla_enable_cinder_backup: false + {% if tls_enabled %} kolla_enable_nova_libvirt_container: false compute_libvirt_enable_tls: true diff --git a/playbooks/kayobe-overcloud-base/pre.yml b/playbooks/kayobe-overcloud-base/pre.yml index a91fbe65b..436bcfe60 100644 --- a/playbooks/kayobe-overcloud-base/pre.yml +++ b/playbooks/kayobe-overcloud-base/pre.yml @@ -26,6 +26,47 @@ src: globals.yml.j2 dest: "{{ kayobe_config_src_dir }}/etc/kayobe/kolla/globals.yml" + # Export an NFS share from this node for Cinder's NFS backend to use. + - name: Ensure the NFS server package is installed + package: + name: "{{ 'nfs-kernel-server' if ansible_facts.os_family == 'Debian' else 'nfs-utils' }}" + state: present + become: true + + - name: Ensure the Cinder NFS export directory exists + file: + path: /export/cinder + state: directory + mode: "0755" + become: true + + - name: Ensure the Cinder NFS share is exported + # Kolla sets nas_secure_file_operations=false, so Cinder writes as root. + copy: + content: "/export/cinder 192.168.33.0/24(rw,sync,no_subtree_check,no_root_squash)\n" + dest: /etc/exports + mode: "0644" + become: true + + - name: Ensure the NFS server is running + service: + name: "{{ 'nfs-kernel-server' if ansible_facts.os_family == 'Debian' else 'nfs-server' }}" + state: started + enabled: true + become: true + + - name: Ensure the Cinder NFS share is active + command: exportfs -ra + become: true + + # The share is reached over the storage network, which is the flat aio + # network in this environment. + - name: Ensure the Cinder NFS shares file exists + copy: + content: "192.168.33.3:/export/cinder\n" + dest: "{{ kayobe_config_src_dir }}/etc/kayobe/kolla/config/nfs_shares" + mode: "0644" + - name: Configure Tenks to use UEFI boot mode replace: path: "{{ kayobe_src_dir }}/dev/tenks-deploy-config-compute.yml" diff --git a/playbooks/kayobe-overcloud-host-configure-base/pre.yml b/playbooks/kayobe-overcloud-host-configure-base/pre.yml index 424baf458..95f17d72a 100644 --- a/playbooks/kayobe-overcloud-host-configure-base/pre.yml +++ b/playbooks/kayobe-overcloud-host-configure-base/pre.yml @@ -16,12 +16,12 @@ # NOTE(mgoddard): Create two loopback devices backed by files. These will # be added to a software RAID volume, then added to an LVM volume group. - - name: Ensure a docker storage backing file exists - command: truncate -s 2G /tmp/docker-storage{{ item }} + - name: Ensure a storage backing file exists + command: truncate -s 2G /tmp/storage{{ item }} loop: [0, 1] - - name: Ensure the docker storage loopback device is created - command: losetup /dev/loop{{ item }} /tmp/docker-storage{{ item }} + - name: Ensure the storage loopback device is created + command: losetup /dev/loop{{ item }} /tmp/storage{{ item }} become: true loop: [0, 1] diff --git a/releasenotes/notes/fix-vault-password-env-validation-1617fe16a6f6f312.yaml b/releasenotes/notes/fix-vault-password-env-validation-1617fe16a6f6f312.yaml new file mode 100644 index 000000000..90bc66ba2 --- /dev/null +++ b/releasenotes/notes/fix-vault-password-env-validation-1617fe16a6f6f312.yaml @@ -0,0 +1,10 @@ +--- +fixes: + - | + Fixed a vault password validation bug that caused errors when using + ``ANSIBLE_VAULT_PASSWORD_FILE``. Users would encounter an error: + ``The vault-ids default,default are available to encrypt. Specify the + vault-id to encrypt with --encrypt-vault-id``. The issue occurred because + the vault password helper was being invoked unnecessarily when only + ``ANSIBLE_VAULT_PASSWORD_FILE`` was set. + `LP#2160369 `__ diff --git a/releasenotes/notes/use-kolla-public-openrc-17f699344c3ca318.yaml b/releasenotes/notes/use-kolla-public-openrc-17f699344c3ca318.yaml new file mode 100644 index 000000000..d6693e81a --- /dev/null +++ b/releasenotes/notes/use-kolla-public-openrc-17f699344c3ca318.yaml @@ -0,0 +1,10 @@ +--- +upgrade: + - | + Use the ``public-openrc.sh`` generated by Kolla Ansible instead of + generating our own. This may result in minor changes to this file. +fixes: + - | + Fixes wrong values of ``OS_AUTH_URL`` in ``public-openrc.sh`` when using a + single external frontend in HAProxy. + `LP#2168467 `__ diff --git a/releasenotes/source/2026.2.rst b/releasenotes/source/2026.2.rst new file mode 100644 index 000000000..a423bf972 --- /dev/null +++ b/releasenotes/source/2026.2.rst @@ -0,0 +1,6 @@ +=========================== +2026.2 Series Release Notes +=========================== + +.. release-notes:: + :branch: stable/2026.2 diff --git a/releasenotes/source/index.rst b/releasenotes/source/index.rst index 4b784937a..6efd23a98 100644 --- a/releasenotes/source/index.rst +++ b/releasenotes/source/index.rst @@ -6,6 +6,7 @@ Kayobe Release Notes :maxdepth: 1 unreleased + 2026.2 2026.1 2025.2 2025.1 diff --git a/requirements.yml b/requirements.yml index b8bf2d7e0..679bfa833 100644 --- a/requirements.yml +++ b/requirements.yml @@ -4,7 +4,7 @@ collections: version: 1.3.0 - name: https://opendev.org/openstack/ansible-collection-kolla type: git - version: stable/2026.2 + version: master - name: cisco.nxos version: 13.0.0 - name: community.docker diff --git a/tox.ini b/tox.ini index bcbf5d7db..582a843cd 100644 --- a/tox.ini +++ b/tox.ini @@ -20,7 +20,7 @@ setenv = OS_TEST_TIMEOUT=60 ANSIBLE_VERBOSITY=3 deps = - -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/2026.2} + -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} -r{toxinidir}/requirements.txt -r{toxinidir}/test-requirements.txt commands = stestr run {posargs} @@ -43,7 +43,7 @@ commands = [testenv:venv] deps = - -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/2026.2} + -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} -r{toxinidir}/test-requirements.txt -r{toxinidir}/doc/requirements.txt commands = {posargs} @@ -61,7 +61,7 @@ commands = [testenv:molecule] deps = - -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/2026.2} + -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} -r{toxinidir}/requirements.txt -r{toxinidir}/molecule-requirements.txt commands = @@ -131,7 +131,7 @@ commands = [testenv:docs] deps = - -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/2026.2} + -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} -r{toxinidir}/doc/requirements.txt commands = rm -rf doc/build/html diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml index 87e91dec5..49239c0ce 100644 --- a/zuul.d/jobs.yaml +++ b/zuul.d/jobs.yaml @@ -93,19 +93,11 @@ required-projects: # Include kayobe to ensure other projects can use this job. - name: openstack/ansible-collection-kolla - # TODO(rlewandowski): Remove when kayobe stable/2026.2 exists. - override-checkout: stable/2026.2 - name: openstack/kayobe - name: openstack/kayobe-config-dev - name: openstack/kolla - # TODO(rlewandowski): Remove when kayobe stable/2026.2 exists. - override-checkout: stable/2026.2 - name: openstack/kolla-ansible - # TODO(rlewandowski): Remove when kayobe stable/2026.2 exists. - override-checkout: stable/2026.2 - name: openstack/requirements - # TODO(rlewandowski): Remove when kayobe stable/2026.2 exists. - override-checkout: stable/2026.2 - name: openstack/tenks irrelevant-files: - ^\..+ @@ -136,7 +128,7 @@ tenks_src_dir: "{{ ansible_env.PWD ~ '/' ~ zuul.projects['opendev.org/openstack/tenks'].src_dir }}" is_upgrade: "{{ 'upgrade' in zuul.job }}" is_slurp: "{{ 'slurp' in zuul.job }}" - previous_release: "{{ '2026.1' if is_slurp else '2026.1' }}" + previous_release: "{{ '2026.1' if is_slurp else '2026.2' }}" tls_enabled: false fail2ban_enabled: false container_engine: 'docker' diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml index 3051acb16..df890dd52 100644 --- a/zuul.d/project.yaml +++ b/zuul.d/project.yaml @@ -29,12 +29,16 @@ - kayobe-overcloud-ubuntu-noble - kayobe-overcloud-ubuntu-noble-podman - kayobe-overcloud-upgrade-rocky10 + - kayobe-overcloud-upgrade-slurp-rocky10 + - kayobe-overcloud-upgrade-slurp-ubuntu-noble - kayobe-overcloud-upgrade-ubuntu-noble - kayobe-seed-rocky10 - kayobe-seed-rocky10-podman - kayobe-seed-ubuntu-noble - kayobe-seed-ubuntu-noble-podman - kayobe-seed-upgrade-rocky10 + - kayobe-seed-upgrade-slurp-rocky10 + - kayobe-seed-upgrade-slurp-ubuntu-noble - kayobe-seed-upgrade-ubuntu-noble - kayobe-seed-vm-rocky10 - kayobe-seed-vm-ubuntu-noble @@ -58,12 +62,16 @@ - kayobe-overcloud-ubuntu-noble - kayobe-overcloud-ubuntu-noble-podman - kayobe-overcloud-upgrade-rocky10 + - kayobe-overcloud-upgrade-slurp-rocky10 + - kayobe-overcloud-upgrade-slurp-ubuntu-noble - kayobe-overcloud-upgrade-ubuntu-noble - kayobe-seed-rocky10 - kayobe-seed-rocky10-podman - kayobe-seed-ubuntu-noble - kayobe-seed-ubuntu-noble-podman - kayobe-seed-upgrade-rocky10 + - kayobe-seed-upgrade-slurp-rocky10 + - kayobe-seed-upgrade-slurp-ubuntu-noble - kayobe-seed-upgrade-ubuntu-noble - kayobe-seed-vm-rocky10 - kayobe-seed-vm-ubuntu-noble