From 6856fac9dd89322a8703ec8b8d52ffc354f90d4e Mon Sep 17 00:00:00 2001 From: Roger Luethi Date: Mon, 29 Jun 2026 09:12:27 +0200 Subject: [PATCH 1/2] kolla: gate redis/valkey enable by release Since release 9.1.0 a single osism/defaults tag is shared across the whole OpenStack-release menu (2024.1/2024.2/2025.1/2025.2 all pin the same defaults_version; base.yml no longer fixes openstack_version). valkey exists upstream only at 2025.2 -- stable/2025.1 is redis-only (no valkey role / no playbook-valkey.yml). A flat enable_valkey/disable enable_redis flip would therefore break every 2025.1/2024.x deploy sharing the tag. Gate both flags on openstack_version instead, mirroring the existing release-conditional idiom already used in defaults (mariadb_image, prometheus_server_image): redis stays enabled for 2024.1/2024.2/2025.1, valkey is enabled for 2025.2 and everything newer (incl. master). This supersedes the earlier unconditional enable_valkey flip. The five coordination/incoming backends that consume these flags are repointed to valkey in a follow-up commit. UpgradeImpact Assisted-by: Claude:claude-opus-4-8 Signed-off-by: Roger Luethi --- all/099-kolla.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/all/099-kolla.yml b/all/099-kolla.yml index cceb13e..a0ba351 100644 --- a/all/099-kolla.yml +++ b/all/099-kolla.yml @@ -8,9 +8,9 @@ enable_common: "yes" enable_central_logging: "yes" enable_prometheus: "yes" -enable_redis: "yes" +enable_redis: "{{ 'yes' if openstack_version in ['2024.1', '2024.2', '2025.1'] else 'no' }}" enable_grafana: "yes" -enable_valkey: "yes" +enable_valkey: "{{ 'no' if openstack_version in ['2024.1', '2024.2', '2025.1'] else 'yes' }}" # openstack From 002ee31e483e10d8c5f76a0ccc40afc6205b847a Mon Sep 17 00:00:00 2001 From: Roger Luethi Date: Mon, 29 Jun 2026 09:12:39 +0200 Subject: [PATCH 2/2] kolla: route redis consumers to valkey Upstream kolla-ansible replaced redis with valkey at stable/2025.2, but OSISM's defaults still override the coordination/incoming backends back to the redis form, so nothing consumes valkey even where it is enabled. Prefer valkey when enable_valkey is set, keeping the existing redis and etcd fallbacks so older releases (which stay redis-enabled, see the enable-flag gating commit) resolve exactly as before. Updated: - masakari_coordination_backend - gnocchi_incoming_storage - cinder_coordination_backend - designate_coordination_backend - ironic_coordination_backend Also route osprofiler_backend_connection_string to whichever store is enabled: with osprofiler_backend in [redis, valkey] it follows enable_valkey/enable_redis, so on 2025.2 it points at valkey instead of a redis service that no longer exists. The default backend stays elasticsearch, so this path is dormant unless an operator opts in. Resolution per release: 2024.1/2024.2/2025.1 -> redis; 2025.2 and newer -> valkey. Comments updated to list valkey as a valid option. UpgradeImpact Assisted-by: Claude:claude-opus-4-8 Signed-off-by: Roger Luethi --- all/001-kolla-defaults.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/all/001-kolla-defaults.yml b/all/001-kolla-defaults.yml index c47de09..d756d10 100644 --- a/all/001-kolla-defaults.yml +++ b/all/001-kolla-defaults.yml @@ -555,7 +555,7 @@ masakari_public_endpoint: "{{ masakari_external_fqdn | kolla_url(public_protocol masakari_api_port: "15868" masakari_api_public_port: "{{ haproxy_single_external_frontend_public_port if haproxy_single_external_frontend | bool else masakari_api_port }}" masakari_api_listen_port: "{{ masakari_api_port }}" -masakari_coordination_backend: "{{ 'redis' if enable_redis | bool else 'etcd' if enable_etcd | bool else '' }}" +masakari_coordination_backend: "{{ 'valkey' if enable_valkey | bool else 'redis' if enable_redis | bool else 'etcd' if enable_etcd | bool else '' }}" memcached_port: "11211" memcache_security_strategy: "ENCRYPT" @@ -1016,10 +1016,10 @@ valkey_connection_string_extras: "&db=0&socket_timeout=60&retry_on_timeout=yes" #################### # Osprofiler options #################### -# valid values: ["elasticsearch", "redis"] +# valid values: ["elasticsearch", "valkey", "redis"] osprofiler_backend: "elasticsearch" opensearch_connection_string: "elasticsearch://{{ opensearch_address | put_address_in_context('url') }}:{{ opensearch_port }}" -osprofiler_backend_connection_string: "{{ redis_connection_string if osprofiler_backend == 'redis' else opensearch_connection_string }}" +osprofiler_backend_connection_string: "{{ valkey_connection_string if osprofiler_backend in ['redis', 'valkey'] and enable_valkey | bool else redis_connection_string if osprofiler_backend in ['redis', 'valkey'] and enable_redis | bool else opensearch_connection_string }}" #################### # RabbitMQ options @@ -1144,8 +1144,8 @@ barbican_library_path: "/usr/lib/libCryptoki2_64.so" # Valid options are [ file, ceph ] gnocchi_backend_storage: "file" -# Valid options are [redis, ''] -gnocchi_incoming_storage: "{{ 'redis' if enable_redis | bool else '' }}" +# Valid options are [valkey, redis, ''] +gnocchi_incoming_storage: "{{ 'valkey' if enable_valkey | bool else 'redis' if enable_redis | bool else '' }}" gnocchi_metric_datadir_volume: "gnocchi" ################################# @@ -1158,8 +1158,8 @@ cinder_backend_vmwarevc_vmdk: "no" cinder_backend_vmware_vstorage_object: "no" cinder_volume_group: "cinder-volumes" cinder_target_helper: "{{ 'lioadm' if ansible_facts.os_family == 'RedHat' else 'tgtadm' }}" -# Valid options are [ '', redis, etcd ] -cinder_coordination_backend: "{{ 'redis' if enable_redis | bool else 'etcd' if enable_etcd | bool else '' }}" +# Valid options are [ '', valkey, redis, etcd ] +cinder_coordination_backend: "{{ 'valkey' if enable_valkey | bool else 'redis' if enable_redis | bool else 'etcd' if enable_etcd | bool else '' }}" # Valid options are [ nfs, ceph, s3 ] cinder_backup_driver: "ceph" @@ -1185,8 +1185,8 @@ designate_ns_record: - "ns1.example.org" designate_backend_external: "no" designate_backend_external_bind9_nameservers: "" -# Valid options are [ '', redis ] -designate_coordination_backend: "{{ 'redis' if enable_redis | bool else '' }}" +# Valid options are [ '', valkey, redis ] +designate_coordination_backend: "{{ 'valkey' if enable_valkey | bool else 'redis' if enable_redis | bool else '' }}" designate_enable_notifications_sink: "no" designate_notifications_topic_name: "notifications_designate" @@ -1383,8 +1383,8 @@ s3_secret_key: # telemetry data. telegraf_enable_docker_input: "no" -# Valid options are [ '', redis, etcd ] -ironic_coordination_backend: "{{ 'redis' if enable_redis | bool else 'etcd' if enable_etcd | bool else '' }}" +# Valid options are [ '', valkey, redis, etcd ] +ironic_coordination_backend: "{{ 'valkey' if enable_valkey | bool else 'redis' if enable_redis | bool else 'etcd' if enable_etcd | bool else '' }}" ########## # Octavia