2024.1 系列发布说明

29.2.4-5

升级说明

  • 变量 networking_ovn_bgp_install_branch 已重命名为 networking_ovn_bgp_git_install_branch,以匹配现有的命名约定。

错误修复

  • 修复了仓库容器启动时的竞争条件,当 var-www-mount.repo 在 glusterd.service 完全启动之前启动时。

  • 修复了 SHA pinning 和 ovn-bgp-agent 的安装,因为 SHA pinning 和 role 使用了不同的变量名。

29.2.2

序言

作为我们常规维护周期的一部分,此版本将角色和服务的版本更新到最新版本。请注意,来自 OpenStack 内部其他项目的错误修复未在此版本说明中列出。

29.2.0

新特性

  • RabbitMQ 已更新到新的次要版本 3.13.7

升级说明

  • 由于过渡到 4.0 需要 RabbitMQ 最低版本 3.13(发生在 2024.2 (Dalmatian) 中),因此在继续进行主要的 OpenStack 升级之前,必须升级到此版本。 在此版本之前,默认使用 RabbitMQ 3.12。

29.1.0

新特性

  • 添加了 ceilometer 消耗 magnum 通知的功能。当 magnum_ceilometer_enabled 为 True 时,将自动消耗通知。

  • 添加了变量 openstack_apache_mpm_backend,它用作服务特定变量的默认值,以定义部署中使用的 Apache MPM。如果未覆盖,则默认 MPM event 将被使用。

  • 添加了变量以更好地控制 Octavia 的 SSH 密钥对生成

    • octavia_ssh_key_manage (True):启用 Octavia 角色以生成和管理用于 Amphoras 的 SSH 密钥对。

    • octavia_resources_deploy_host (localhost):将创建 SSH 密钥的主机。

    • octavia_ssh_key_dir (${HOME}/.ssh):在 octavia_resources_deploy_host 上创建密钥对的目录。

    • octavia_ssh_key_comment (Generated-by-Nova):密钥对的注释。

    • octavia_ssh_key_format (ssh):存储的私钥的格式

    • octavia_ssh_key_type (rsa):生成的 SSH 密钥对的类型

    • octavia_ssh_key_size (2048):私钥长度。

已知问题

  • 由于 Ansible collections 中 OpenStack 的 bug,在某些情况下,“Default”域名可以重命名为“default”。一个已知的示例是在 keystone_sp -> trusted_idp_list -> federated_identities 结构下定义 domain: default 的情况下。

升级说明

  • 由于当前 OpenStack 版本存在兼容性问题,Neutron API 的默认值已切换回旧的 eventlet,而不是 uWSGI。您可以在 Neutron bug report 中找到更多信息。您可以通过设置 neutron_use_uwsgi: True 来保留当前行为

  • 请确保在联邦使用的情况下,定义域名称而不是其 ID(例如,在 keystone_sp -> trusted_idp_list -> federated_identities 结构下定义 Default 而不是 default)。

  • 为了统一整个部署中使用的 Apache MPM,Horizon 默认 MPM 从 worker 切换到 event。引入了变量 horizon_apache_mpm_backend 以定义正在使用的 MPM。

错误修复

  • 服务之间使用的 Apache MPM 已对齐,不会在 metal 部署中发生冲突。默认使用 Apache MPM event

  • 在切换 Neutron 从 uWSGI 到旧的 eventlet 时,该角色将禁用并停止 neutron-rpc-server 服务。

  • Octavia amphora 提供程序已返回到受支持的提供程序列表中,以满足 Magnum octavia_provider 默认标签。

  • Skyline 不再默认安装作为 os-infra_hosts 的一部分,这可能会导致 OpenStack 升级过程中出现不必要的仪表板更改。

其他说明

  • Skyline 已从分配给 os-infra_hosts 中移除。如果您想将 Skyline 作为您的仪表板安装,则需要显式定义 skyline_dashboard_hosts

29.0.2

安全问题

  • 包含关于 OSSA-2024-002 的安全(非漏洞)服务版本

错误修复

  • Python wheels 构建不再因仓库主机问题而失败,只要至少有一个可访问的仓库主机具有匹配的 Distro/Version/Architecture,就应该成功。

其他说明

  • 为了与 oslo.messaging 恢复默认heartbeat_in_pthread 值,我们删除了基于主机组处理该值的自定义逻辑。您仍然可以使用 oslomsg_heartbeat_in_pthread 或特定的角色变量来更改行为。

29.0.1

弃用说明

  • 变量 keystone_external_ssl 已被弃用且不再使用。您仍然可以通过 keystone_backend_sslhaproxy_ssl/haproxy_ssl_all_vips 来控制 HAProxy 和 Keystone 之间的通信是否应使用 TLS 保护,以及客户端和 HAProxy 之间的通信是否应使用 TLS 保护。

安全问题

29.0.0

序言

Ansible 编目中容器的命名约定已更改,以符合 RFC1034 中定义的规范。从现在开始,所有新添加的容器都不会在其 inventory_hostnamecontainer_name 中带有下划线 (_) 符号。此更改不会触碰或更改编目中已存在的容器。为了将新的命名约定应用于现有环境,您需要删除主机和编目中的容器。之后,将生成新的容器名称,并且可以再次创建容器。

RabbitMQ Quorum 队列默认启用,以及对 oslo.messaging 的其他重大改进,例如队列管理器、使用 Quorum 的瞬态队列以及为扇出使用流队列。有关这些选项的更多详细信息,请查看 oslo.messaging 版本说明

添加了对 Skyline 仪表板部署的支持。

新特性

  • 添加了变量 cinder_manage_volume_types,允许跳过卷类型创建和管理,由 os_cinder 角色执行。

  • RabbitMQ 策略现在支持 apply_to 参数,例如,仅针对 classic_queues、exchanges 等目标策略。

  • 添加了新的变量 blazar_nova_aggregate_name,允许控制 Blazar 的 Nova 聚合名称。如果不是 False(默认值‘freepool’),则在部署期间将创建主题中的聚合。

  • 实现了变量 blazar_manager_plugins,允许配置 Blazar 的启用插件列表。

  • Blazar 现在使用 memcached 进行令牌缓存。可以使用变量 blazar_memcached_servers 控制 memcached 服务器列表。

  • 添加了额外的变量以更好地控制 Blazar 与 Nova 的集成

    • nova_blazar_enabled (bool) - 控制是否应配置 Blazar 集成

    • nova_blazar_scheduler_filters (list) - 将在 Nova 调度器中启用的额外过滤器

    • nova_blazar_pip_packages (list) - 将安装在 Nova 调度器主机上的额外 Python 包

  • 默认在 openstack-ansible all-in-one 中部署的 Ceph 版本已从 Quicny 切换到 Reef。仍然,这种集成主要是一个测试工具,并且对于生产部署的建议是部署独立的 ceph 集群。

  • 添加了变量 nova_cell_force_update,可以在运行时设置为 True 以强制更新 cell 记录。这在 cell0 或任何其他连接配置的密码轮换时可能很有用。

  • 添加了变量 galera_install_method 以控制是否应配置外部存储库,或者角色是否应尝试从发行版的默认存储库安装。

  • 添加了属性保护配置,通过新的变量进行管理:glance_property_protection_file_overrides(应配置才能运行,请参阅默认变量中的示例)、glance_property_protection_rule_formatglance_property_protection_file

  • haproxy_pki_create_certificates 已实现。它允许用户显式禁用使用 PKI 角色生成证书,但继续使用它进行证书分发。

  • 添加了新的变量,以允许指定在 setup-hosts、setup-infrastructure 和 setup-openstack 中运行预先和事后现有代码的用户定义的 playbook。OpenStack-Ansible 部署可以通过这些挂钩进行扩展,并添加额外的用户定义功能,这些功能将完全访问 OSA 编目和主机变量。

  • Horizon 现在可以与 Skyline 仪表板一起安装。如果同时部署了 Horizon 和 Skyline,Horizon 将由 /horizon URI 提供。

  • 添加了变量 ironic_user_driver_types,允许扩展默认 ironic_driver_types 以及覆盖现有的默认记录。

  • 为 Neutron 角色添加了额外的变量以进行可用区配置

    • neutron_default_availability_zones - 定义一个可用区列表,l3/dhcp 代理或 OVN 路由器/端口将在没有在 Neutron API 请求中提供提示的情况下被调度到该列表。

    • neutron_availability_zone - 当前组件的可用区。建议利用组/主机变量来设置此变量。对于 OVN,此变量可以包含用冒号分隔的多个值。

  • 添加了一个新参数 octavia_ovn_enabled,以支持 Octavia OVN 提供程序驱动程序。Octavia OVN 提供程序驱动程序是 amphora 的替代方案,并使用 OVN/OVS 内置的支持进行负载均衡。需要 ml2.ovn Neutron 插件才能使用此功能。可以通过指定 –provider ovn 参数来在 openstack loadbalancer create 命令期间使用 OVN 提供程序。

  • 添加了新的变量 octavia_enabled_provider_agents,允许启用 Octavia 的提供程序代理。

  • 添加了 openstack-resources.yml playbook,旨在处理 OpenStack 资源的创建和进一步调整。它严重依赖于 OpenStack 的 Ansible 集合。该 playbook 的主要目标是提供一种统一的方法来创建和管理常见资源,例如镜像、flavor、计算聚合、网络等。Playbook 可以消耗以下变量,这些变量提供给 openstack.osa.openstack_resources 角色中类似的变量

    • openstack_user_identity

    • openstack_user_compute

    • openstack_user_network

    • openstack_user_image

    • openstack_user_coe

    请参阅角色文档和示例以获取更多详细信息。

  • 为 os_neutron 角色添加了新的变量以调整与 OVS 管理器的连接

    • neutron_ovsdb_manager_host:默认为 127.0.0.1

    • neutron_ovsdb_manager_port:默认为 6640

    • neutron_ovsdb_manager_proto:默认为 tcp

    • neutron_ovsdb_manager_connection:将 proto、host 和 port 组合成有效的 neutron 插件连接字符串。

  • 实现了新的变量以控制新的 oslo.messaging 行为

    • oslomsg_rabbit_stream_fanout:如果 oslomsg_rabbit_quorum_queues 也设置为 True 则启用

    • oslomsg_rabbit_transient_quorum_queues:如果 oslomsg_rabbit_stream_fanoutTrue 则启用

    • oslomsg_rabbit_qos_prefetch_count:如果 oslomsg_rabbit_stream_fanoutTrue 则必须设置为正值

    • oslomsg_rabbit_queue_manager:默认禁用。某些服务配置中缺少 [oslo_concurrency]/lock_path 定义,这是 QManager SHM 锁定的必需条件。

    每个服务还具有相应的变量,前缀为服务名称,例如 <service>_oslomsg_rabbit_stream_fanout 以单独控制它们。

  • 添加了使用 key-value 对配置 rabbitmq-server 记录选项的变量 rabbitmq_log。默认值 journald (true) 和 file (false) 已保留,但现在可以配置更多选项(请参阅 https://rabbitmq.cn/logging.html)。

  • OpenStack-Ansible 现在可以用于部署 Skyline,一种替代仪表板。已向 env.dconf.d 添加了新的示例文件以支持 Skyline 基础设施,并添加了一个名为 os-skyline-install.yml 的 playbook 来部署 API 和控制台服务。

  • 引入了一个新的覆盖 skyline_client_max_body_size,以支持通过 Skyline 仪表板上传大型镜像。默认值 1100M 支持上游 Ubuntu 和 Rocky Linux 镜像,但可以增加以支持更大的镜像,或减少以鼓励使用 CLI。

  • Trove 角色引入了变量以独立配置 Guest Agent 的 RPC/通知通信:- trove_guest_oslomsg_rabbit_quorum_queues - trove_guest_oslomsg_rpc_port - trove_guest_oslomsg_rpc_userid - trove_guest_oslomsg_rpc_password - trove_guest_oslomsg_rpc_vhost

  • 实现了在 Ansible 虚拟环境中安装额外的 Python 包。默认情况下,额外的需求应在 /etc/openstack_deploy/user-ansible-venv-requirements.txt 文件中定义。可以通过 USER_ANSIBLE_REQUIREMENTS_FILE 环境变量覆盖文件路径。

已知问题

  • 由于 config_template 模块的最新更改,不再可以将变量作为字典键在 overrides 中使用。 下面的示例将无法正确渲染

    config_overrides:
      "{{ inventory_hostname }}":
        cruel: world
    

    此限制归结于 Ansible 设计,也适用于任何其他模块。 为了克服它,您可以将字典转换为 Jinja2 格式

    config_overrides: |-
      {{
        {
          inventory_hostname: {
            'cruel': 'world'
          }
        }
      }}
    

升级说明

  • 当配置 MariaDB 以使用 TLS 时,可用额外的变量,通过将 galera_use_ssl 设置为 true 来启用。 galera_require_secure_transport 以要求所有客户端连接都经过加密,默认为 false。 galera_tls_version 以提供接受的 TLS 协议列表,默认为 ‘TLSv1.2,TLSv1.3’。

  • Blazar 的浮动 IP 插件 (virtual.floatingip.plugin) 现在默认启用。使用 blazar_manager_plugins 变量更改启用插件的列表(如果需要)。

  • 确保在 openstack_user_config.yml / conf.d 中,cloudkitty_hosts 被替换为 rating_hosts。对于使用 LXC 容器的部署:升级完成后,请确保 Cloudkitty 不再在您的 LXC 主机上运行,之后您应该能够从编目中的 cloudkitty_all 组中删除 LXC 主机。

  • 添加了对默认启用所有稳定的 RabbitMQ 功能标志的支持。 这将在升级后自动发生,并避免在安装新版本的 RabbitMQ 时可能发生的兼容性问题。

  • 对于配置了 nova_backend_ssl: True 的部署,Nova API 后端的 TLS 证书将在升级期间重新生成。从现在开始,它们将以 _api 为后缀。

  • magnum_glance_images 的格式已更改为与 openstack_resources 角色兼容的格式。请参阅 os_magnum 角色文档以获取相关示例。

  • 标记为非活动的的服务(Murano、Senlin、Sahara)将不会被升级,因为它们未针对 2024.1 (Caracal) 发布。为了继续管理这些旧版本上的服务,您需要执行以下操作

    • 创建文件 /etc/openstack_deploy/user-role-requirements.yml,内容如下

      - name: os_<service>
        scm: git
        src: https://opendev.org/openstack/openstack-ansible-os_<service>
        version: master
        trackbranch: master
      
    • 管理服务的 playbook 可以在角色示例中找到,例如:/etc/ansible/roles/os_<service>/examples/playbook.yml

    • 服务将保留在您之前生成的编目中,直到您显式删除它们。

  • 默认启用 RabbitMQ Quorum Queues 后,所有 vhost 都将被重新创建并重命名,且不带前导斜杠 (‘/’)。例如,/nova vhost 将被重命名为 nova。这可能会影响已配置的监控告警规则或统计数据收集。

    重命名过程还会导致服务在升级期间停机时间延长,从 vhost 重命名开始,直到服务角色执行完成。这对于 Nova 和 Neutron 等服务尤其重要,因为角色运行时可能需要一段时间才能覆盖所有主机。

    您可以通过在 user_variables.yml 中定义 oslomsg_rabbit_quorum_queues: False 来禁用 Quorum Queues 的使用,并使用之前的 HA Queues 默认设置。

    请查看 RabbitMQ 维护 文档,了解更多关于如何在两种模式之间切换,以减少停机时间的信息。

  • 为了防止升级过程中出现故障,将在升级前自动启用稳定的 RabbitMQ 功能标志。

  • 在使用高可用性集群(非 quorum 队列)中的 RabbitMQ 时,先前未包含在 HA 策略中的临时 ‘reply_’ 队列现在包含在 HA 策略中。 请注意,这会增加 RabbitMQ 集群的负载,尤其是在具有大量计算节点的部署中。

  • 强烈建议在升级期间显式禁用 trove_guest_oslomsg_rabbit_quorum_queues,如果 oslomsg_rabbit_quorum_queues: True,这是自 2024.1 (Caracal) 以来默认行为。迁移到 Trove Guestagent 的 Quorum 队列不受支持,并且可能存在问题,因为已经启动的 agent 将不会重新加载配置。但是,新的部署可以从一开始安全地使用 quorum 队列。

  • 变量 gnocchi_policy_default_file_path 的默认值已更改为在 /etc/openstack_deploy/gnocchi/ 文件夹下搜索 policy.yaml 文件。请确保您使用 YAML 格式而不是 JSON 格式的文件。

弃用说明

  • 变量 clientceph_extra_components 变量中的格式已被弃用,转而使用映射,其中包含一个必需的属性 name。 将 client 键定义为简单列表是为了保持向后兼容性,但将在未来的版本中删除。

  • 变量 heat_deferred_auth_method 已被弃用,且没有效果。默认行为是使用 trust 作为延迟方法,并且这是目前唯一可用的选项。使用密码在 keystonev3 中已损坏,不应使用。

  • 由于服务已转移到 Inactive state,以下角色将不再包含在 2024.1 版本中:- Murano - Senlin - Sahara

    用于管理这些服务的 Playbook 也已从树中删除,只能在特定角色 examples 文件夹下找到。

  • 控制 systemd-networkd 默认文件名模板的变量(当未提供一个时)已被弃用,并且现在没有效果。

    • systemd_networkd_filename

    • systemd_networkd_filename_alt

    强烈建议在定义 systemd_netdevssystemd_networks 结构时,显式提供 filename 参数。

  • 为 Ironic 用户生成 SSH 密钥对已被弃用并删除。变量 ironic_recreate_keys 已被删除,且没有效果。

  • 变量 neutron_ovs_socket_path 已被弃用,将被静默忽略。请使用 neutron_ovsdb_manager_connection 来覆盖与 OVS 的连接。

错误修复

  • Blazar 端点现在已版本化,默认情况下后缀为 /v1

  • Blazar 服务身份验证已修复

  • 修复了用户集合需求引导过程,当部署者集合使用“git+file”作为源方案时。 之前,在使用“git+file”方案时,可能会安装到意外版本的集合。

  • 修复了 ceph_extra_components 变量中 client 键的向后兼容性,以支持列表和映射列表。

  • 由于 Cloudkitty 的 env.d 定义中的问题,该服务不仅安装在 LXC 容器内,还安装到所有 LXC 主机上,这不是预期的行为。已在服务的 env.d 定义中修复了此问题,并将其从 cloudkitty_hosts 重命名为 rating_hosts,这应反映在您的 openstack_user_config.yml 或 conf.d 文件中。

  • 修复了 ceph_conf_overrides_rgw 变量的格式,通过将覆盖字典转换为 Jinja2 格式来解决 Ansible 在字典中使用变量作为键的限制。

  • 在显式将 localhost 添加到 inventory 后,由于在 /etc/hosts 文件管理的块内添加了 localhost 的记录,导致潜在的 FQDN 更改。 现在已修复,Ansible 管理的块内的 /etc/hosts 文件中的 127.0.0.1 记录将被删除。

  • PKI 角色在 metal 场景下已修复,当 nova-compute 放置在与 nova-api 相同的宿主机上时。 之前,由于名称不唯一,证书每次运行都会被重新生成。

  • 变量 horizon_webroot 的更改现在得到尊重,并将反映在 Apache 配置中,以相应地提供静态文件并定义 wsgi 路径。

  • 已发布 env.d 文件 physical_skel 部分中组名命名限制,关于使用下划线符号的问题。

  • 可以向 systemd 网络提供多个路由,它们将被放置到单独的配置文件 /etc/systemd/network/{{ filename }}.d/routes.conf

    先前定义多个路由会导致它们在同一部分名称下被压缩,而为了使它们正常工作,每个描述的路由必须放置在自己的部分中。

  • 由于缺少参数,Nova cell0 配置为即使启用了 nova_galera_use_ssl,也不使用 TLS 进行 MySQL 通信。现在已修复,cell0 在下一次 playbook 运行时应更新。

其他说明

  • 当使用 Ceph 作为存储时,Glance 正在使用 uWSGI。

  • 从 os-<service>-install.yml playbook 中删除了与服务名称匹配的标签。例如 ‘nova’、‘neutron’、‘cinder’ 等。这些标签仅在与 setup-openstack.yml 结合使用时才有用,但被发现具有意外行为,可能会导致跳过重要的任务。

  • 当 Skyline 使用内置 HAProxy 服务器部署时,默认情况下将在禁用 ssl 时监听 80 端口,在启用 ssl 时监听 443 端口。 Skyline 后端在其术语中将监听 9999 端口。

    当尝试使用 Horizon 部署 Skyline 时,Skyline 将优先,在 80/443 端口提供服务。与此同时,Horizon 将在“子目录” /horizon 中可用。