diff --git a/doc/source/operations/upgrading-openstack.rst b/doc/source/operations/upgrading-openstack.rst index f2bdb5a16..db7d2dc1f 100644 --- a/doc/source/operations/upgrading-openstack.rst +++ b/doc/source/operations/upgrading-openstack.rst @@ -35,10 +35,52 @@ Notable changes in the |current_release| Release There are many changes in the OpenStack |current_release| release described in the release notes for each project. Here are some notable ones. -.. TODO Add notable changes +RabbitMQ 4.0 +------------ + +RabbitMQ is being upgraded to 4.0 in Epoxy. Existing transient queues must be +migrated on Caracal prior to upgrading. + +.. TODO(mattcrees): Add link to docs when they exist + +stackhpc.linux collection +------------------------- + +The ``stackhpc.linux`` collection version has been bumped to 1.3.0. Note this +version uses systemd to activate virtual functions. This change is restricted +to the ``stackhpc.linux.sriov`` role, which is not used by Kayobe. If a custom +playbook uses this role, you can retain existing behaviour by setting +``sriov_numvfs_driver`` to ``udev``. + +Neutron driver defaults +----------------------- + +The default Neutron ML2 type drivers and tenant network types now use +``geneve`` instead of ``vxlan`` when OVN is enabled. This affects the +``kolla_neutron_ml2_type_drivers`` and +``kolla_neutron_ml2_tenant_network_types`` variables. + +Custom inspector_keep_ports +--------------------------- + +If you have customized ``inspector_keep_ports``, ensure it is set to one of: +``all``, ``present``, or ``added``. If you are relying on the previous +behaviour you should set ironic_keep_ports to present. + +Seed/Infra VM boot firmware +--------------------------- + +The default boot firmware for Seed and Infra VMs has changed from ``bios`` to +``efi``. Set ``infra_vm_boot_firmware`` and ``seed_vm_boot_firmware`` to bios +to retain existing behaviour. + +Prometheus MSteams +------------------ -Placeholder ------------ +The ``prometheus-msteams`` integration in Kolla Ansible has been removed, users +should switch to the `native +`__ +Prometheus Teams integration. Known issues ============ diff --git a/etc/kayobe/environments/aufn-ceph/kolla/inventory/overcloud-services.j2 b/etc/kayobe/environments/aufn-ceph/kolla/inventory/overcloud-services.j2 index f2b89aabb..9d521e958 100644 --- a/etc/kayobe/environments/aufn-ceph/kolla/inventory/overcloud-services.j2 +++ b/etc/kayobe/environments/aufn-ceph/kolla/inventory/overcloud-services.j2 @@ -416,9 +416,6 @@ monitoring [prometheus-libvirt-exporter:children] compute -[prometheus-msteams:children] -prometheus-alertmanager - [masakari-api:children] control diff --git a/etc/kayobe/environments/ci-builder/inventory/groups b/etc/kayobe/environments/ci-builder/inventory/groups index 155f353e2..20195ab72 100644 --- a/etc/kayobe/environments/ci-builder/inventory/groups +++ b/etc/kayobe/environments/ci-builder/inventory/groups @@ -5,8 +5,8 @@ seed [network] -[docker:children] -# Hosts in this group will have Docker installed. +[container-engine:children] +# Hosts in this group will have a container engine (Docker/Podman) installed. seed [ntp:children] diff --git a/etc/kayobe/inventory/groups b/etc/kayobe/inventory/groups index 1028c2ca9..01e1fc7f7 100644 --- a/etc/kayobe/inventory/groups +++ b/etc/kayobe/inventory/groups @@ -79,7 +79,7 @@ vgpu ############################################################################### # Service groups. -[docker:children] +[container-engine:children] # Hosts in this group will have Docker installed. seed controllers diff --git a/etc/kayobe/kolla/inventory/group_vars/prometheus-blackbox-exporter b/etc/kayobe/kolla/inventory/group_vars/prometheus-blackbox-exporter index 5cb4de99e..1da9491b4 100644 --- a/etc/kayobe/kolla/inventory/group_vars/prometheus-blackbox-exporter +++ b/etc/kayobe/kolla/inventory/group_vars/prometheus-blackbox-exporter @@ -6,132 +6,25 @@ # prometheus_blackbox_exporter_endpoints_kayobe is another set of default # endpoints that are templated by Kayobe rather than Kolla Ansible. See # kolla/globals.yml for more details. -prometheus_blackbox_exporter_endpoints: | +prometheus_blackbox_exporter_endpoints_custom: | {% set endpoints = [] %} - {% for dict_item in (prometheus_blackbox_exporter_endpoints_kayobe | default([]) + prometheus_blackbox_exporter_endpoints_default) %} + {% for dict_item in (prometheus_blackbox_exporter_endpoints_kayobe | default([]) + stackhpc_prometheus_blackbox_exporter_endpoints_default) %} {% if dict_item.enabled | bool %} {% for endpoint in dict_item.endpoints %} {% set _ = endpoints.append(endpoint) %} {% endfor %} {% endif %} {% endfor %} - {{ (endpoints + prometheus_blackbox_exporter_endpoints_custom) | unique | select | list }} + {{ (endpoints + stackhpc_prometheus_blackbox_exporter_endpoints_custom) | unique | select | list }} # A list of custom prometheus Blackbox exporter endpoints. Each element should # have the following format: # - name:module:endpoint # for example # - stackhpc:http_2xx:https://stackhpc.com:443 -prometheus_blackbox_exporter_endpoints_custom: [] +stackhpc_prometheus_blackbox_exporter_endpoints_custom: [] -prometheus_blackbox_exporter_endpoints_default: - # OpenStack endpoints - - endpoints: - - "barbican:os_endpoint:{{ barbican_public_endpoint }}" - - "{{ ('barbican_internal:os_endpoint:' + barbican_internal_endpoint) if not kolla_same_external_internal_vip | bool }}" - enabled: "{{ enable_barbican | bool }}" - - endpoints: - - "blazar:os_endpoint:{{ blazar_public_base_endpoint }}" - - "{{ ('blazar_internal:os_endpoint:' + blazar_internal_base_endpoint) if not kolla_same_external_internal_vip | bool }}" - enabled: "{{ enable_blazar | bool }}" - - endpoints: - - "ceph_rgw:http_2xx:{{ ceph_rgw_public_base_endpoint }}" - - "{{ ('ceph_rgw_internal:http_2xx:' + ceph_rgw_internal_base_endpoint) if not kolla_same_external_internal_vip | bool }}" - enabled: "{{ enable_ceph_rgw | bool }}" - - endpoints: - - "cinder:os_endpoint:{{ cinder_public_base_endpoint }}" - - "{{ ('cinder_internal:os_endpoint:' + cinder_internal_base_endpoint) if not kolla_same_external_internal_vip | bool }}" - enabled: "{{ enable_cinder | bool }}" - - endpoints: - - "cloudkitty:os_endpoint:{{ cloudkitty_public_endpoint }}" - - "{{ ('cloudkitty_internal:os_endpoint:' + cloudkitty_internal_endpoint) if not kolla_same_external_internal_vip | bool }}" - enabled: "{{ enable_cloudkitty | bool }}" - - endpoints: - - "designate:os_endpoint:{{ designate_public_endpoint }}" - - "{{ ('designate_internal:os_endpoint:' + designate_internal_endpoint) if not kolla_same_external_internal_vip | bool }}" - enabled: "{{ enable_designate | bool }}" - - endpoints: - - "glance:os_endpoint:{{ glance_public_endpoint }}" - - "{{ ('glance_internal:os_endpoint:' + glance_internal_endpoint) if not kolla_same_external_internal_vip | bool }}" - enabled: "{{ enable_glance | bool }}" - - endpoints: - - "gnocchi:os_endpoint:{{ gnocchi_public_endpoint }}" - - "{{ ('gnocchi_internal:os_endpoint:' + gnocchi_internal_endpoint) if not kolla_same_external_internal_vip | bool }}" - enabled: "{{ enable_gnocchi | bool }}" - - endpoints: - - "heat:os_endpoint:{{ heat_public_base_endpoint }}" - - "{{ ('heat_internal:os_endpoint:' + heat_internal_base_endpoint) if not kolla_same_external_internal_vip | bool }}" - - "heat_cfn:os_endpoint:{{ heat_cfn_public_base_endpoint }}" - - "{{ ('heat_cfn_internal:os_endpoint:' + heat_cfn_internal_base_endpoint) if not kolla_same_external_internal_vip | bool }}" - enabled: "{{ enable_heat | bool }}" - - endpoints: - - "horizon:http_2xx:{{ horizon_public_endpoint }}" - - "{{ ('horizon_internal:http_2xx:' + horizon_internal_endpoint) if not kolla_same_external_internal_vip | bool }}" - enabled: "{{ enable_horizon | bool }}" - - endpoints: - - "ironic:os_endpoint:{{ ironic_public_endpoint }}" - - "{{ ('ironic_internal:os_endpoint:' + ironic_internal_endpoint) if not kolla_same_external_internal_vip | bool }}" - - "ironic_inspector:os_endpoint:{{ ironic_inspector_public_endpoint }}" - - "{{ ('ironic_inspector_internal:os_endpoint:' + ironic_inspector_internal_endpoint) if not kolla_same_external_internal_vip | bool }}" - enabled: "{{ enable_ironic | bool }}" - - endpoints: - - "keystone:os_endpoint:{{ keystone_public_url }}" - - "{{ ('keystone_internal:os_endpoint:' + keystone_internal_url) if not kolla_same_external_internal_vip | bool }}" - enabled: "{{ enable_keystone | bool }}" - - endpoints: - - "magnum:os_endpoint:{{ magnum_public_base_endpoint }}" - - "{{ ('magnum_internal:os_endpoint:' + magnum_internal_base_endpoint) if not kolla_same_external_internal_vip | bool }}" - enabled: "{{ enable_magnum | bool }}" - - endpoints: - - "manila:os_endpoint:{{ manila_public_base_endpoint }}" - - "{{ ('manila_internal:os_endpoint:' + manila_internal_base_endpoint) if not kolla_same_external_internal_vip | bool }}" - enabled: "{{ enable_manila | bool }}" - - endpoints: - - "neutron:os_endpoint:{{ neutron_public_endpoint }}" - - "{{ ('neutron_internal:os_endpoint:' + neutron_internal_endpoint) if not kolla_same_external_internal_vip | bool }}" - enabled: "{{ enable_neutron | bool }}" - - endpoints: - - "nova:os_endpoint:{{ nova_public_base_endpoint }}" - - "{{ ('nova_internal:os_endpoint:' + nova_internal_base_endpoint) if not kolla_same_external_internal_vip | bool }}" - enabled: "{{ enable_nova | bool }}" - - endpoints: - - "octavia:os_endpoint:{{ octavia_public_endpoint }}" - - "{{ ('octavia_internal:os_endpoint:' + octavia_internal_endpoint) if not kolla_same_external_internal_vip | bool }}" - enabled: "{{ enable_octavia | bool }}" - - endpoints: - - "placement:os_endpoint:{{ placement_public_endpoint }}" - - "{{ ('placement_internal:os_endpoint:' + placement_internal_endpoint) if not kolla_same_external_internal_vip | bool }}" - enabled: "{{ enable_placement | bool }}" - - endpoints: - - "swift:os_endpoint:{{ swift_public_base_endpoint }}" - - "{{ ('swift_internal:os_endpoint:' + swift_internal_base_endpoint) if not kolla_same_external_internal_vip | bool }}" - enabled: "{{ enable_swift | bool }}" - # Additional service endpoints - - endpoints: "{% set etcd_endpoints = [] %}{% for host in groups.get('etcd', []) %}{{ etcd_endpoints.append('etcd_' + host.replace('-', '') + ':http_2xx:' + hostvars[host]['etcd_protocol'] + '://' + ('api' | kolla_address(host) | put_address_in_context('url')) + ':' + hostvars[host]['etcd_client_port'] + '/metrics')}}{% endfor %}{{ etcd_endpoints }}" - enabled: "{{ enable_etcd | bool }}" - - endpoints: - - "grafana:http_2xx:{{ grafana_public_endpoint }}" - - "{{ ('grafana_internal:http_2xx:' + grafana_internal_endpoint) if not kolla_same_external_internal_vip | bool }}" - enabled: "{{ enable_grafana | bool }}" - - endpoints: - - "opensearch:http_2xx:{{ opensearch_internal_endpoint }}" - enabled: "{{ enable_opensearch | bool }}" - - endpoints: - - "opensearch_dashboards_external:http_2xx_opensearch_dashboards:{{ opensearch_dashboards_external_endpoint }}/api/status" - enabled: "{{ enable_opensearch_dashboards_external | bool }}" - - endpoints: - - "opensearch_dashboards:http_2xx_opensearch_dashboards:{{ opensearch_dashboards_internal_endpoint }}/api/status" - enabled: "{{ enable_opensearch_dashboards | bool }}" - - endpoints: - - "prometheus:http_2xx_prometheus:{{ prometheus_public_endpoint if enable_prometheus_server_external else prometheus_internal_endpoint }}/-/healthy" - enabled: "{{ enable_prometheus | bool }}" - - endpoints: - - "prometheus_alertmanager:http_2xx_alertmanager:{{ prometheus_alertmanager_public_endpoint if enable_prometheus_alertmanager_external else prometheus_alertmanager_internal_endpoint }}" - enabled: "{{ enable_prometheus_alertmanager | bool }}" - - endpoints: "{% set rabbitmq_endpoints = [] %}{% for host in groups.get('rabbitmq', []) %}{{ rabbitmq_endpoints.append('rabbitmq_' + host.replace('-', '') + (':tls_connect:' if rabbitmq_enable_tls | bool else ':tcp_connect:') + ('api' | kolla_address(host) | put_address_in_context('url')) + ':' + hostvars[host]['rabbitmq_port'] ) }}{% endfor %}{{ rabbitmq_endpoints }}" - enabled: "{{ enable_rabbitmq | bool }}" - - endpoints: "{% set redis_endpoints = [] %}{% for host in groups.get('redis', []) %}{{ redis_endpoints.append('redis_' + host.replace('-', '') + ':tcp_connect:' + ('api' | kolla_address(host) | put_address_in_context('url')) + ':' + hostvars[host]['redis_port']) }}{% endfor %}{{ redis_endpoints }}" - enabled: "{{ enable_redis | bool }}" +stackhpc_prometheus_blackbox_exporter_endpoints_default: # Backend endpoints - endpoints: "{% set barbican_endpoints = [] %}{% for host in groups.get('barbican-api', []) %}{{ barbican_endpoints.append('barbican_backend_' + host.replace('-', '') + ':os_endpoint:' + ('https' if kolla_enable_tls_backend | bool else 'http') + '://' + ('api' | kolla_address(host) | put_address_in_context('url')) + ':' + hostvars[host]['barbican_api_port']) }}{% endfor %}{{ barbican_endpoints }}" enabled: "{{ enable_barbican | bool }}" @@ -171,38 +64,3 @@ prometheus_blackbox_exporter_endpoints_default: enabled: "{{ enable_ironic | bool }}" - endpoints: "{% set swift_endpoints = [] %}{% for host in groups.get('swift-api', []) %}{{ swift_endpoints.append('swift_backend_' + host.replace('-', '') + ':os_endpoint:' + 'http://' + ('api' | kolla_address(host) | put_address_in_context('url')) + ':' + hostvars[host]['swift_api_port']) }}{% endfor %}{{ swift_endpoints }}" enabled: "{{ enable_swift | bool }}" - -# Ensure service endpoints are defined -blazar_internal_base_endpoint: "{{ blazar_internal_fqdn | kolla_url(internal_protocol, blazar_api_port) }}" -blazar_public_base_endpoint: "{{ blazar_external_fqdn | kolla_url(public_protocol, blazar_api_public_port) }}" -ceph_rgw_internal_base_endpoint: "{{ ceph_rgw_internal_fqdn | kolla_url(internal_protocol, ceph_rgw_port) }}" -ceph_rgw_public_base_endpoint: "{{ ceph_rgw_external_fqdn | kolla_url(public_protocol, ceph_rgw_public_port) }}" -cinder_internal_base_endpoint: "{{ cinder_internal_fqdn | kolla_url(internal_protocol, cinder_api_port) }}" -cinder_public_base_endpoint: "{{ cinder_external_fqdn | kolla_url(public_protocol, cinder_api_public_port) }}" -cloudkitty_internal_endpoint: "{{ cloudkitty_internal_fqdn | kolla_url(internal_protocol, cloudkitty_api_port) }}" -cloudkitty_public_endpoint: "{{ cloudkitty_external_fqdn | kolla_url(public_protocol, cloudkitty_api_public_port) }}" -gnocchi_internal_endpoint: "{{ gnocchi_internal_fqdn | kolla_url(internal_protocol, gnocchi_api_port) }}" -gnocchi_public_endpoint: "{{ gnocchi_external_fqdn | kolla_url(public_protocol, gnocchi_api_public_port) }}" -grafana_public_endpoint: "{{ grafana_external_fqdn | kolla_url(public_protocol, grafana_server_public_port) }}" -heat_cfn_internal_base_endpoint: "{{ heat_cfn_internal_fqdn | kolla_url(internal_protocol, heat_api_cfn_port) }}" -heat_cfn_public_base_endpoint: "{{ heat_cfn_external_fqdn | kolla_url(public_protocol, heat_api_cfn_public_port) }}" -heat_internal_base_endpoint: "{{ heat_internal_fqdn | kolla_url(internal_protocol, heat_api_port) }}" -heat_public_base_endpoint: "{{ heat_external_fqdn | kolla_url(public_protocol, heat_api_public_port) }}" -horizon_public_endpoint: "{{ horizon_external_fqdn | kolla_url(public_protocol, horizon_tls_port if kolla_enable_tls_external | bool else horizon_port) }}" -ironic_inspector_internal_endpoint: "{{ ironic_inspector_internal_fqdn | kolla_url(internal_protocol, ironic_inspector_port) }}" -ironic_inspector_public_endpoint: "{{ ironic_inspector_external_fqdn | kolla_url(public_protocol, ironic_inspector_public_port) }}" -magnum_internal_base_endpoint: "{{ magnum_internal_fqdn | kolla_url(internal_protocol, magnum_api_port) }}" -magnum_public_base_endpoint: "{{ magnum_external_fqdn | kolla_url(public_protocol, magnum_api_public_port) }}" -manila_internal_base_endpoint: "{{ manila_internal_fqdn | kolla_url(internal_protocol, manila_api_port) }}" -manila_public_base_endpoint: "{{ manila_external_fqdn | kolla_url(public_protocol, manila_api_public_port) }}" -nova_internal_base_endpoint: "{{ nova_internal_fqdn | kolla_url(internal_protocol, nova_api_port) }}" -nova_public_base_endpoint: "{{ nova_external_fqdn | kolla_url(public_protocol, nova_api_public_port) }}" -opensearch_dashboards_external_endpoint: "{{ opensearch_dashboards_external_fqdn | default(kolla_external_fqdn) | kolla_url(public_protocol, opensearch_dashboards_port_external) }}" -opensearch_dashboards_internal_endpoint: "{{ opensearch_dashboards_internal_fqdn | default(kolla_internal_fqdn) | kolla_url(internal_protocol, opensearch_dashboards_port) }}" -placement_internal_endpoint: "{{ placement_internal_fqdn | kolla_url(internal_protocol, placement_api_port) }}" -placement_public_endpoint: "{{ placement_external_fqdn | kolla_url(public_protocol, placement_api_public_port) }}" -prometheus_alertmanager_internal_endpoint: "{{ prometheus_alertmanager_internal_fqdn | kolla_url(internal_protocol, prometheus_alertmanager_port) }}" -prometheus_alertmanager_public_endpoint: "{{ prometheus_alertmanager_external_fqdn | kolla_url(public_protocol, prometheus_alertmanager_public_port) }}" -prometheus_internal_endpoint: "{{ prometheus_internal_fqdn | kolla_url(internal_protocol, prometheus_port) }}" -prometheus_public_endpoint: "{{ prometheus_external_fqdn | kolla_url(public_protocol, prometheus_public_port) }}" -swift_public_base_endpoint: "{{ swift_external_fqdn | kolla_url(public_protocol, swift_proxy_server_port) }}" diff --git a/etc/kayobe/pulp.yml b/etc/kayobe/pulp.yml index b72be9998..73ede6155 100644 --- a/etc/kayobe/pulp.yml +++ b/etc/kayobe/pulp.yml @@ -196,7 +196,7 @@ stackhpc_pulp_distribution_deb_production: >- # Whether to sync Rocky Linux 9 packages. stackhpc_pulp_sync_rocky_9: "{{ os_distribution == 'rocky' }}" -# Rocky 9 minor version number. Supported values: 1, 2, 3, 4, 5. Default is 5 +# Rocky 9 minor version number. Supported values: 5. Default is 5 stackhpc_pulp_repo_rocky_9_minor_version: 5 # Rocky 9 Snapshot versions. The defaults use the appropriate version from # pulp-repo-versions.yml for the selected minor release. @@ -510,12 +510,12 @@ stackhpc_pulp_images_kolla: - prometheus-elasticsearch-exporter - prometheus-libvirt-exporter - prometheus-memcached-exporter - - prometheus-msteams - prometheus-mtail - prometheus-mysqld-exporter - prometheus-node-exporter - prometheus-openstack-exporter - prometheus-v2-server + - proxysql - rabbitmq - redis - redis-sentinel diff --git a/releasenotes/notes/blackbox-updates-db81e29a45063a42.yaml b/releasenotes/notes/blackbox-updates-db81e29a45063a42.yaml new file mode 100644 index 000000000..ae530ef51 --- /dev/null +++ b/releasenotes/notes/blackbox-updates-db81e29a45063a42.yaml @@ -0,0 +1,6 @@ +--- +upgrade: + - | + The ``prometheus_blackbox_exporter_endpoints_custom`` variable has been + renamed to ``stackhpc_prometheus_blackbox_exporter_endpoints_custom`` to + avoid conflits with an upstream Kolla-Ansible var of the same name. diff --git a/releasenotes/notes/drop-rl-minor-versions-5165c194df3fb516.yaml b/releasenotes/notes/drop-rl-minor-versions-5165c194df3fb516.yaml new file mode 100644 index 000000000..196402435 --- /dev/null +++ b/releasenotes/notes/drop-rl-minor-versions-5165c194df3fb516.yaml @@ -0,0 +1,8 @@ +--- +upgrade: + - | + Support for Rocky Linux 9.1 to 9.4 has been dropped. Hosts must be updated + to RL9.5 or above before upgrading to this OpenStack release. +deprecations: + - | + Support for Rocky Linux 9.1 to 9.4 has been dropped.