2023.2 系列发布说明

28.4.2

序言

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

28.4.0

已知问题

  • 由于 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)。

错误修复

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

28.3.1

错误修复

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

其他说明

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

28.3.0

新特性

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

升级说明

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

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

弃用说明

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

安全问题

28.2.1

升级说明

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

错误修复

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

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

28.2.0

安全问题

  • Ansible-core 已升级到版本 2.15.9,以涵盖 CVE-2023-5764 和 CVE-2024-0690

错误修复

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

28.0.1

已知问题

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

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

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

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

弃用说明

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

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

    • systemd_networkd_filename

    • systemd_networkd_filename_alt

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

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

错误修复

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

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

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

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

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

28.0.0

新功能

  • 使用非 Ansible inventory 中的后端节点的 HAProxy 服务现在可以在列表中指定 backend_port,以及 nameip_addr 设置。 这允许服务绑定到不同后端服务器上的不同端口。

  • 添加了变量 galera_backups_full_init_overridesgalera_backups_increment_init_overrides,这些变量可用于覆盖 mariadb 备份的默认 systemd 单元文件集。 类似于更改 I7b3b0f4da047f82a49266ef57fba2fbaa24cebdc。

  • 启用 Ceilometer 资源缓存,使用 Memcached。

  • 添加了变量 rabbitmq_erlang_extra_args,允许定义 erlang 的额外参数。

  • 实现了变量 lxc_image_cache_expiration,用于控制缓存的 LXC 镜像的有效时长。 默认值为 1年。 变量格式应与 community.general.to_time_unit 过滤器兼容。

  • 现在可以使用具有特定前缀的多个变量来定义 tempest 测试 include/exclude 列表的全部内容。 来自 host/group 或 ansible extra-vars 的任何名称以 os_tempest 角色默认值 tempest_test_search_includelist_patterntempest_test_search_excludelist_pattern 开头的变量将与现有的 tempest_test_includelisttempest_test_excludelist 变量组合成一个单独的 include/exclude 列表。

  • 为每个服务定义添加了新的键 haproxy_frontend_h2haproxy_backend_h2,以针对指定的服务启用 HTTP/2。

    这还添加了新的变量来控制前端和后端的默认行为

    • haproxy_frontend_h2: true

    • haproxy_backend_h2: false

    请注意,只有受 TLS 保护的前端才能使用 HTTP/1.1 和 HTTP/2 的双重堆栈。 如果前端只是 TCP,则会忽略 haproxy_frontend_h2。

    同时,无论 TLS/纯 TCP 配置如何,都将尊重 haproxy_backend_h2

  • HAProxy 服务现在可以使用 haproxy_ssl_path 在服务定义下覆盖证书的路径。

  • 添加了变量 openstack_host_journald_config,允许提供 systemd-journald 的任意配置作为映射。

  • 为使用 mariabackup 创建的备份添加了可选的压缩。 添加了两个新的 CLI 参数到 mariabackup 脚本,用于启用压缩和选择压缩工具。

    • --compress=True|False

    • --compressor=<compressor>

    还引入了控制上述参数的新 Ansible 变量。

    • galera_mariadb_backups_compress

    • galera_mariadb_backups_compressor

    每个备份存档都存储在一个专用目录中,以及备份元数据。

  • 添加了 nova_console_proxy_types 列表变量,用于在部署具有不同计算节点的混合 nova 控制台类型时使用。

  • 添加 rabbitmq_additional_config 以能够添加额外的配置,例如添加插件的配置。

  • 添加了设置环境变量 RABBITMQ_USE_LONGNAMES 通过 rabbitmq-env.conf 以能够使用节点的 FQDN。 默认情况下,这将设置为 false,这也是 RabbitMQ 设置的默认值。

  • 添加了新的变量 rabbitmq_queue_replication,允许控制是否使用任何冗余功能(如 quorum 队列或经典镜像队列)。 默认设置为 True

  • 添加了对 RabbitMQ quorum 队列的支持。 默认情况下禁用 quorum 队列。 实现了以下变量来控制行为

    • oslomsg_rabbit_quorum_queues (默认值:false)

    • oslomsg_rabbit_quorum_delivery_limit (默认值:0)

    • oslomsg_rabbit_quorum_max_memory_bytes (默认值:0)

    为每个服务也实现了类似的变量,而上述变量旨在全局更改行为。

升级说明

  • 默认值 glance_available_stores 已更改。 现在它始终应表示为映射列表,其中每个项目都具有以下键

    • name(必需)

    • type(必需)

    • config(可选)

  • 默认情况下,受 TLS 保护的前端已启用 HTTP/2。 可以通过设置 haproxy_frontend_h2: false 来禁用此行为

  • 默认情况下禁用备份压缩,因此现有部署无需进行任何更改。 如果需要压缩,请将 galera_mariadb_backups_compress 设置为 True。 使用 galera_mariadb_backups_compressor 选择压缩工具,默认值为 gzip

  • Keystone OIDC 参数“oidc_redirect_uri”已替换为“oidc_redirect_path”。 除非您运行可能与 Keystone 上的默认设置冲突的其他服务,否则不再需要显式设置此参数。 您的 OIDC 提供程序可能需要更新以反映此重定向 URI 的更改,默认情况下为 Keystone 公共 URL 加上路径 /oidc_redirect。

  • 如果部署者希望在 OpenStack 升级期间切换到使用 RabbitMQ quorum 队列而不是传统的 HA 策略,则需要在 user_variables.yml 中定义变量 oslomsg_rabbit_quorum_queues: True

    如果启用了 oslomsg_rabbit_quorum_queues,RabbitMQ vhosts 将在不带前导 / 的情况下重新创建。 确保在您的监控软件中反映这些更改(如果 vhosts 未自动发现)。 更改 vhost 名称会导致服务的停机时间延长,因为尚未重新配置的后端将无法连接到 RabbitMQ,直到重新启动。 对于对 RabbitMQ 停机时间敏感或某些服务(例如 Trove 或使用 ML2 LXB 或 ML2 OVS 驱动程序的 Neutron)也值得谨慎处理升级。

  • 变量 lxc_cache_map 已删除,因为 lxc_hosts ansible 角色在几个版本中只能创建与主机架构和操作系统匹配的容器,并且 lxc_cache_map 只是携带了 ansible_facts 的副本。

  • 之前弃用的变量 tempest_test_whitelisttempest_test_blacklist 已删除。 应使用替换的 include/exclude 列表来定义要运行的 tempest 测试。

  • 变量 tempest_test_includelist_file_pathtempest_test_excludelist_file_path 已重命名为 tempest_includelist_file_pathtempest_excludelist_file_path。 应更新使用这些变量的任何覆盖,以考虑新的变量名称。

弃用说明

  • 为了遵循 Ansible 变量命名约定,以下变量已重命名

    • systemd_TimeoutSec -> systemd_service_timeout_sec

    • systemd_Restart -> systemd_service_restart

    • systemd_RestartSec -> systemd_service_restart_sec

    • systemd_CPUAccounting -> systemd_service_cpu_accounting

    • systemd_BlockIOAccounting -> systemd_service_block_io_accounting

    • systemd_MemoryAccounting -> systemd_service_memory_accounting

    • systemd_TasksAccounting -> systemd_service_tasks_accounting

    • systemd_PrivateTmp -> systemd_service_private_tmp

    • systemd_PrivateDevices -> systemd_service_private_devices

    • systemd_PrivateNetwork -> systemd_service_private_network

    • systemd_PrivateUsers -> systemd_service_private_users

    保留了旧变量名称以保持向后兼容性,但将在下一个版本中删除。 强烈建议在您的部署中使用新的变量名称。

  • SSHD 和 rsync 不再为所有容器安装或配置。 这也弃用了 lxc_container_ssh_key 的使用,并且该变量不再有效。

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

  • nova_pci_passthrough_whitelist 现在已被弃用,转而使用 nova_device_spec

  • nova_ram_weight_multiplier 已被弃用。 应使用 nova_nova_conf_overrides 定义乘数。 请注意,nova_ram_weight_multiplier 的默认值先前设置为 5,而 nova 的默认值是 1。 此弃用将略微更改 OSA 中的称重行为。

  • OpenDaylight 驱动程序的支持已被 Neutron 团队在 2023.2(Bobcat)开发周期中弃用,并且已从 OpenStack-Ansible 中删除。

  • common-playbooks/nova.yml 已被弃用并删除。 所有内容现在都直接位于 os-nova-install.yml 中。

错误修复

  • 修复了 LXC 图像缓存到期机制。 之前 LXC 图像将永远有效。

  • 修复了在 Ubuntu Jammy 上使用 Apache mod_auth_openidc 时的问题,需要一个新的 OIDCXForwardedHeaders 配置选项。

  • 修复了 OpenStack 命令行 OIDC 集成问题,适用于 Apache mod_auth_openidc 版本 >= v2.4.9,包括 Ubuntu Jammy。

  • 默认情况下,并非所有计算节点都会被添加为 OVN 网关,并且会尊重 network-gateway_hosts 定义。

  • 修复了 Cinder Volume 和 Backup 服务中的高水位线内存使用问题,并降低了峰值内存使用量。

其他说明

  • 由于 bug #2041717,localhost 目标已显式添加到 OSA 库存中。因此,“all”组现在包含 localhost,针对“all”的自定义 playbook 可能需要调整,例如:hosts: all:!localhost

  • 实现了变量 openstack_service_accept_both_protocols,以便临时允许 haproxy 前端同时接受 HTTP 和 HTTPS 流量。在更改服务端点的协议时很有用。

  • 对于使用集成 ceph-ansible 的部署,现在默认启用了 S3 API。