Current Series Release Notes¶
21.0.0.0rc1-439¶
New Features¶
Adds support for LDAP authentication in Grafana. Users can now enable LDAP by setting
grafana_ldap_enabledtotrueand providing anldap.tomlconfiguration file in the{{ node_custom_config }}/grafana/directory.
Standardized health check endpoints for OpenStack API services and supporting components (Grafana, etcd, influxdb, rabbitmq). Both HAProxy and Docker health checks now use dedicated endpoints like /healthcheck, /api/health, or service-specific paths for consistent and reliable detection.
Health checks now explicitly expect HTTP 200 status codes and use standardized curl commands across all services.
Docker container health checks have been unified with HAProxy configurations, using the same dedicated endpoints.
Adds support for deploying multiple instances of the Nova Compute Ironic service on the same host. This is useful in large baremetal deployments.
Adds support for deploying
OpenStack Network Exporterfor gathering OVS/OVN related metrics. This is enabled by default when using Prometheus.
Adds support for deploying
prometheus-valkey-exporterto enable monitoring of Valkey servers.
Added a validation check to ensure the number of
neutron_external_interfaceentries matches the number ofneutron_bridge_nameentries in the configuration. This prevents misconfigurations that could cause deployment failures or incorrect networking behavior. LP#1864832
Added TLS support for the RabbitMQ management API and UI. When
rabbitmq_enable_tlsis set totrue, TLS is now also enabled for the RabbitMQ management interface.
Add support for libvirt vTPM (swtpm) configuration. LP#2106219
Increased the default value of
innodb_log_file_sizefrom 96MB to 2GB. This change improves overall MariaDB performance, though crash recovery may take longer as a tradeoff. Users can adjust the value by overriding themariadb_innodb_log_file_size_mbvariable. The allowed range is 4MB to 524288MB (512GB).
Ironic DHCP can now be configured to supply DNS servers via
ironic_dnsmasq_dhcp_ranges. This enables the inspection ramdisk (IPA) to reach FQDN API endpoints.
The HAProxy TLS configuration has been hardened following Mozilla SSL Modern recommendations for HAProxy 2.8.15 and OpenSSL 3.x (Rocky Linux and Ubuntu): https://ssl-config.mozilla.org/#server=haproxy&version=2.8.15&config=modern&openssl=3.0.13&guideline=5.7
Add support for deploying neutron_ovn_vpn_agent. This enables the use of vpnaas in ovn environments. <https://docs.openstack.org/kolla-ansible/latest/reference/networking/neutron-extensions.html#neutron-vpnaas-vpn-as-a-service>`__
Adds explicit support for passing through the
ipa-ntp-serversetting via the kernel commandline to the Ironic Python Agent.You can now also use
ironic_kernel_append_paramsto provide additional arguments to the kernel command line when booting the Ironic Python Agent.
The
nova-cellrole now supports operator-specified custom templates forqemu.confandlibvirtd.conf. Kolla-Ansible will now look for host-specific and global overrides before falling back to the default templates.
New variables
rabbitmq_stream_max_segment_size_bytesandrabbitmq_stream_segment_max_ageare added to make RabbitMQ stream retention policy configurable. These two new variables are only applied whenom_enable_rabbitmq_stream_fanoutis set to true. It is recommended to tune the values based on user’s environment to prevent leaving too many ready messages in stream queues.
Adds support for custom MariaDB Galera notification scripts. Operators can provide a
wsrep-notify.shscript in the custom config directory (/etc/kolla/config/mariadb/). When detected, Kolla Ansible configures MariaDB to execute it on cluster state changes, enabling integration with Prometheus Alertmanager or custom logging.
An Alertmanager datasource is now automatically configured in Grafana when
enable_prometheus_alertmanageris set totrue.
Adds support for passing additional command-line arguments to the
ovn-northddaemon via theovn_northd_cmdline_extrasvariable. This allows operators to customize ovn-northd behavior, such as setting thread count (--n-threads), enabling parallel build (--use-parallel-build), or tuning the inactivity probe timeout (--inactivity-probe).
The RabbitMQ upgrade path validation now supports explicitly allowed version jumps (e.g., major or multi-minor upgrades) via the
rabbitmq_allowed_upgradesvariable. This allows operators to manage supported RabbitMQ upgrade paths through role defaults orglobals.ymlwithout modifying the core Ansible task files.
Added
service_uwsgi_config_threadsto configure uWSGI thread count. Horizon now applieshorizon_wsgi_threadswhen using uWSGI.
Sets
scope_keytotenant_idin the[collect]section of the CloudKitty configuration file when Prometheus and Openstack Exporter are enabled, to ensure CloudKitty fetches valid metrics from the OpenStack Exporter.
Keystone OpenID metadata files are now templated, enabling variable substitution and dynamic configuration.
Upgrade Notes¶
If you are migrating to the new feature to deploy multiple instances of Nova Compute Ironic, you are first required to manually remove the existing Nova Compute Ironic Docker container, and config directories.
Minimum supported Ansible version is now
12(ansible-core 2.19) and maximum supported is13(ansible-core 2.20).
barbican-apiuWSGI configuration has been migrated to use theservice-uwsgi-configrole, consistent with other Kolla-Ansible roles.
The default session cache backend for Horizon has changed when Valkey is enabled. If
enable_valkeyis set totrue, Valkey will be used as the preferred backend to improve availability.
The default value of
innodb_log_file_sizehas increased from 96MB to 2GB. This improves MariaDB performance but crash recovery may take longer. Before upgrading, ensure sufficient disk space is available for the larger InnoDB log file.
By default, ML2/OVS L3 routers no longer set
ha_vrrp_health_check_intervalwhenenable_neutron_agent_hais true. This is to prevent stability issues when Neutron is unable to keep up with L3 router state changes.
Support for deploying
influxdbhas been dropped. Kolla delivered the community end-of-life version v1, and there are no plans to upgrade to v2. Users should migrate to an alternative monitoring solution and remove influxdb containers and their configuration manually.
Support for deploying
telegrafhas been dropped after earlier deprecation. Existing users need to remove telegraf containers and their configuration manually.
Support for deploying
zunhas been dropped due to the service being broken in 2026.1.kuryrhas been dropped as well, due to it being only used byzun.
The legacy (non-rolling)
ironicupgrade mechanism has been dropped. Ironic upgrades now exclusively use the rolling upgrade mechanism.
kolla_logsrole has been split fromcommonrole, please update your inventory accordingly to includekolla_logsgroup.
lightbits_JWTvariable has been renamed tolightbits_jwt
cinder-volumeandcinder-backupcontainers are now deployed by default oncindergroup - which effectively iscontrolby default (earlier it defaulted tostorage).
New Ansible inventory groups have been introduced to support properly Cinder LVM backend setup:
cinder-backup-lvmcinder-backup-multiplecinder-volume-lvmcinder-volume-multiple
Please update your inventory overrides accordingly.
Adds support for seamless RabbitMQ 4.2 upgrades by defining the required version jump paths in the default configuration.
The global variable
distro_python_versionhas been removed as it is no longer needed. Python path handling is now done at the image level.
commonAnsible role has been renamed tokolla_toolbox. Also thekolla-toolboxAnsible inventory group has been renamed tokolla_toolboxto be in line with Ansible requirements. The tag forkolla_toolboxdeployment task has also been renamed. Users should update their inventories and inventory overrides to reflect this change.
kolla-toolboxand all kolla_toolbox based invocations of Ansible openstack.cloud modules have been reworked to use clouds.yaml.openstack_authvariable is only used for passing keystone admin password for services bootstrap runs.
designate-apiis now running under uWSGI and supports backend TLS.
glance-apiis now running under uWSGI and supports backend TLS without the additional haproxy container. Theglance-tls-proxycontainer will be removed during the upgrade process.
magnum-apiis now running under uWSGI and supports backend TLS.
Deprecation Notes¶
Remove option to set OIDCHTMLErrorTemplate in Debian 13 and Rocky 10. As this option was removed in 2.4.14 version of modoidc auth plugin. It is still present in Ubuntu Noble and can be used there. This applies only when using keystone_wsgi_provider: apache, which is not the default.
Bug Fixes¶
Fixes an issue where OpenSearch log retention check would fail due to plugins not being fully loaded, resulting in a timeout error. This was caused by the task that checks for the existence of a log. Added a check before plugin tasks to ensure plugins are fully loaded.
Improves Horizon availability when cache nodes fail by adding support for Valkey as a session cache backend. LP#2093414
Fixed an issue where
neutron-serverand other neutron agents would fail to start whenkolla_copy_ca_into_containerswas enabled but backend TLS was disabled. The configuration now correctly distinguishes between the requirement for backend certificates (neutron-cert.pem) and the optional copying of CA certificates. LP#2121694
Make generation of prometheus.yml consistent when using custom override files.
Previous behaviour would lead to changes in prometheus.yml on every run when custom override files were used, as the find result was not sorted. This could lead to unnecessary restarts and unreadable diffs of the prometheus service. LP#2126635
Fixed an issue where redundant HAProxy backend configuration was generated for the memcached service. The memcached backend entries are no longer created since no OpenStack service uses HAProxy to reach memcached. LP#2130641
Fixed missing
schemaname: novarule in ProxySQL configuration for the default (unnamed) Nova cell. LP#2130985
Fixes issue where ProxySQL certificates were copied over even with
kolla_externally_managed_certset to True. LP#2131993
Fixes federation path for new keystone-httpd container. Previously the normal keystone container running apache wsgi was used. After migration to the uwsgi container the federation logic remained in the keystone-httpd container, but the federation files were never mounted there. LP#2134455.
Adds logrotate configuration for OpenSearch Dashboards. Previously, logs located in
/var/log/kolla/opensearch-dashboards/were not included in the rotation schedule, which could lead to excessive disk space consumption. LP#2137716
Fixes a regression in the Valkey upgrade process where the
valkey_master_hostvariable was not defined if the Redis migration block was skipped. This led to a fatal error during the “Wait for Valkey replication sync” task due to the interaction betweenrun_onceanddelegate_to. The variable is now defined globally at the start of the upgrade tasks. LP#2138440
Fixed an issue where Valkey logs were not being correctly parsed by Fluentd. The timestamp format in the Fluentd configuration has been updated to match the format used by Valkey, ensuring logs are properly collected and indexed in the logging backend. LP#2138451
Fixed a critical issue in
kolla-mergepwdwhere the migration from Redis to Valkey resulted in authentication failures. The tool now automatically inherits the existingredis_master_passwordinto the newvalkey_master_passwordfield during upgrades. This prevents serious cluster damage in deployments using custom Keystone caching solutions and ensures Octavia remains stable throughout the upgrade process, avoiding globalHTTP 401 Unauthorizederrors caused by password mismatches. LP#2138461
Fixed an issue where Neutron sub-services (RPC server, maintenance and periodic workers) would crash when
enable_neutron_vpnaaswas set toyesdue to missingneutron_vpnaas.conffile injection. LP#2138498
Fixed an issue during upgrades from 2025.1 to 2025.2 where the Valkey role unconditionally referenced the
redisinventory group. Since Redis is no longer present in the default inventories, this caused the upgrade to fail with anAnsibleUndefinedVariableerror. The upgrade logic now correctly handles inventories without aredisgroup.
Fixed an issue where the
masakari-apicontainer was unnecessarily restarted during everyreconfigureoperation. The container handler now correctly includes thehealthcheckconfiguration, ensuring idempotency by matching the container’s runtime definition with the service defaults. LP#2143979
Fixes an issue where iterated containers were restarted all at once when only a subset were detected as changed. LP#2144917
Fixes an issue where Prometheus would not scrape ProxySQL or Valkey metrics if Alertmanager was disabled. The configuration blocks for these exporters were incorrectly nested within the Alertmanager conditional block. LP#2148279
Fixed an intermittent Zuul CI failure in the MariaDB backup test. LP#2129930
Fixes Bifrost bootstrap by disabling the new Bifrost OCI artifact registry which is not compatible with running Bifrost inside a container. LP#2138705
Fixes bootstrapping of prometheus-mysqld-exporter which is failing creating mariadb user when monitoring group is configured to be deployed on separate hosts.
Fixes a placement problem for cyborg api and conductor services, that would be also be scheduled on compute nodes, rather than being exclusively on control plane. LP#2087552
Fixes a failure in the destroy workflow when cleaning up the Octavia interface service by running the task with elevated privileges.
Fixes default ulimits for Debian-family container engines when using containerd. Previously, ulimits were not enforced by default, which could lead to missing nofile limits and service startup failures.
This change introduces sane default ulimit values for Debian-based distributions while keeping existing EL9 behavior unchanged.
Fixed an issue in Glance where enabling
kolla_copy_ca_into_containersforced a check for missing service certificates. Theglance-apicontainer now only requiresglance-cert.pemifglance_enable_tls_backendis explicitly set toyes.
Fixed TLS errors in Skyline’s nginx configuration when upstream endpoints use HTTPS. LP#2091935 LP#1951437
Prevents users installing plugins via the Grafana UI which will cause Grafana instances to become out-of-sync in multinode deployments. LP#2122587
Fix generating passwords longer than 72 characters. This fixes prometheus configuration. LP#2126975
Other Notes¶
Add more CI coverage for Federation codepath. Migrate ansible to use openstack.cloud ansible collection modules for configuring federation. Previously it was done using python-openstackclient.
This release exposes additional configuration options for OpenStack Compute consoles which utilize the SPICE protocol. These configuration options have been defaulted to the previous implied values, so do not need to be set if you’re happy with the current behavior. The Kolla-Ansible Nova guide has been updated with further details of these new configuration options.
The structure of the templates for log rotate cron jobs has been simplified to reduce repetition. If you have local changes which add to or modify these templates you may need to update your modifications.