2023.1 系列发布说明

27.6.1

已知问题

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

升级说明

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

27.6.0

升级说明

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

错误修复

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

27.5.1

安全问题

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

其他说明

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

27.5.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 保护。

安全问题

错误修复

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

27.4.3

升级说明

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

弃用说明

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

错误修复

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

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

27.4.2

已知问题

错误修复

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

27.4.0

新特性

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

已知问题

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

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

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

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

弃用说明

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

    • systemd_networkd_filename

    • systemd_networkd_filename_alt

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

错误修复

  • 修复了 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

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

27.3.0

升级说明

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

错误修复

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

其他说明

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

27.2.0

新特性

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

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

  • HAProxy 服务现在可以通过在服务定义下设置 haproxy_ssl_path 来覆盖证书的路径。

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

弃用说明

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

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

错误修复

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

27.1.0

新特性

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

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

    • --compress=True|False

    • --compressor=<compressor>

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

    • galera_mariadb_backups_compress

    • galera_mariadb_backups_compressor

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

升级说明

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

错误修复

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

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

27.0.0

序言

现在可以创建和管理第三方服务、挂载点和由 OpenStack-Ansible 管理的主机上的网络。这还包括 OpenStack-Ansible 安装所需的网络,例如 br-mgmt 或 br-storage。为了配置在选定的主机集上特定的资源,建议使用 group_vars 或 host_vars。

新特性

  • 变量 uwsgi_bind_address 现在可以是一个作为字符串传递的单个 IP 地址,也可以是一个作为 YAML 列表传递到 uwsgi 角色的 IP 地址列表。这允许 uwsgi 侦听一组特定的 IP 地址,而不仅仅是一个地址。

  • 为启用 Ceph Immutable Object Cache 和 Persistent Write Log 缓存的 ceph_client 角色添加了支持和文档。

  • 添加了定期从 Cinder 数据库中清理已删除记录的选项。拥有大量已删除实例的记录会影响服务性能。为此,引入了两个新服务:cinder-purge-deletedcinder-archive-deleted,它们将使用相应的 systemd 定时器在第一个 cinder-api 主机上定期调用。

    默认情况下,这些服务被禁用/停止,并且不执行数据库清理。您可以通过定义变量 cinder_purge_deleted 来启用此行为。

  • 一个新的键 haproxy_default_backend 可以为在 haproxy 负载均衡器中配置的每个服务定义,配置此变量会将一个值写入服务前端配置中的 default_backend 指令。当使用 ACL 选择其他后端时,以及允许默认后端名称与 haproxy_service_name 不同时,这可能很有用。

  • 使用 openstack-ansible 命令时,自动生成 ansible_<variable> fact 变量现在被禁用。传递到目标主机的的数据更少。现在可以通过以下方式访问相同的值:ansible_facts['variable']

  • 之前,haproxy 中服务端口 80/443 的配置与 Horizon 服务相关联,但处理证书颁发(如 certbot)和提供 security.txt 等功能也需要在相同的 haproxy 前端进行配置。现有的变量 haproxy_horizon_service 现在仅描述 horizon 的 haproxy 后端,而一个新的变量 haproxy_base_service 配置使用端口 80/443 的任何服务的 haproxy 前端。

  • 现在可以为每个 haproxy 服务定义配置一个新的键 haproxy_map_entries,以允许将任意条目放置在任何数量的 haproxy 映射文件中,这些映射文件随后可以在 haproxy 配置文件的其他指令(如 use_backendhttp-request)中引用。完整的映射文件是从所有服务定义中定义的片段构建的,并按字母数字顺序或使用用户定义的顺序组装成完整的映射文件。

  • 添加了新的 management_ip 选项,可以定义在 conf.d 或 openstack_user_config.yml 文件中的主机中。如果访问主机的 SSH 网络与 OpenStack 管理网络不同,这可能很有用。选项 management_ip 应设置为表示主机上管理网络的 IP 地址,而 ip 选项仍然表示 Ansible 将用于访问主机的 SSH 地址。

  • 如果 os_ironic 角色中的 ironic_drivers_enabled 变量包含使用 ipmitool-socat 控制台接口的驱动程序,则该接口现在在 ironic.confenabled_console_interfaces 配置选项中自动启用。添加了新的变量 ironic_socat_bind_addressironic_socat_port_range 以支持进一步自定义串行控制台数据流。

  • 添加了变量 lxc_net_bridge_type,允许控制 lxcbr0 的类型:目前可以设置为 linuxbridge 或 openvswitch。默认值为 linuxbridge,保留了之前的行为。

  • 在 os_ironic 角色中定义了一种新的驱动程序类型 no_driver,它启用了 ironic 配置中的 no-consoleno-raidno-inspect 接口。此驱动程序已添加到 ironic ansible 角色配置的默认驱动程序集中。

  • 添加了对 os_nova ansible 角色支持,以将资源提供程序配置文件部署到 nova 计算节点。这允许自动配置资源提供程序,而无需使用 openstack API 或命令行。

  • 添加了定期从 Nova 数据库中清理已删除记录的选项。拥有大量已删除实例的记录会影响服务性能。为此,引入了两个新服务:nova-archive-deletednova-purge-deleted,它们将使用相应的 systemd 定时器在第一个 nova-conductor 主机上定期调用。

    默认情况下,这些服务被禁用/停止,并且不执行数据库清理。您可以通过定义变量 nova_archive_deletednova_purge_deleted 来启用此行为。

    服务 nova-archive-deleted 将执行 nova-manage db archive_deleted_rows,而 nova-archive-deleted 将执行 nova-manage db purge。有关这些命令的作用的更多信息,请参阅 nova-manage 文档:https://docs.openstack.org/nova/2025.2/cli/nova-manage.html

  • 添加了新的变量,允许用户配置 OpenStack 主机上的额外的 systemd 服务、网络或挂载点。虽然服务和挂载点可以在任何目标主机上配置,但网络仅会在裸机节点上创建。要配置容器中的额外网络,请参阅 openstack_user_config.yml 文档。添加了新的变量列表

    • openstack_hosts_systemd_mounts

    • openstack_hosts_systemd_networkd_devices

    • openstack_hosts_systemd_networkd_networks

    • openstack_hosts_systemd_networkd_prefix

    • openstack_hosts_systemd_services

    • openstack_hosts_systemd_slice

  • 添加了变量 venv_pip_build_envvenv_pip_install_env,允许在 wheels 构建或 venv 安装期间设置额外的环境变量。

  • 添加了变量 pki_handler_ca_changedpki_handler_cert_changedpki_handler_cert_installed,这些变量控制角色在包含时触发的 meta 处理程序的名称。如果同一 playbook 中包含多个利用 pki 角色的角色,这可能很有用,并且您希望更好地控制处理程序执行。

  • Haproxy 服务现在在每个服务 playbook 的开头单独配置。

  • 添加了新的变量 openstack_opendev_base_urlopenstack_github_base_url,允许快速更改所有使用的服务的仓库的基本 URL。这对于连接受限的环境或在其中一个镜像出现问题的情况下可能很有用。

  • 添加了变量 venv_build_group,允许提供一个 ansible 组名,该组名将用于查找 wheels 构建目标。默认值为 repo_all

升级说明

  • 使用 openstack-ansible 的任何外部或第三方集成,它们使用围绕 ansible-playbookopenstack-ansible 命令行包装器,并通过 ansible_<variable> 模式访问 ansible facts,必须重构以使用以下方式访问这些变量:ansible_facts['variable']。如果这不可能,可以将环境变量 ANSIBLE_INJECT_FACT_VARS 设置为 True 以恢复之前的行为。

  • keystone_security_txt_content 变量名已更改为 haproxy_security_txt_content。Security.txt 文件现在直接从 haproxy 提供。

  • 变量 keystone_ssl 已被弃用,取而代之的是 keystone_backend_ssl

  • 如果您正在使用 NSX 或 Nuage 网络驱动程序,请确保您已将 nova_network_type 的定义替换为适当的 nova_nova_conf_overrides。请参阅 os_neutron 文档,了解所需的覆盖。

  • Octavia 的默认提供程序驱动程序已更改为 amphorav2,因为 amphoraoctavia 驱动程序已被弃用并计划删除。

  • 变量 octavia_loadbalancer_topologyoctavia_enable_anti_affinity 的默认值已分别切换为 ACTIVE_STANDBYTrue,以反映最合理的生产设置。如果您想保留之前的行为,可以定义这些变量为它们以前的默认值。

  • octavia_security_group_rule_cidr 的默认值已更改并定义为 Octavia 管理网络的 CIDR。要保留之前的行为,请将变量覆盖为 0.0.0.0/0

  • 已移除对 calico ml2 驱动程序的支持。将无法升级使用 calico 网络部署的现有环境。

弃用说明

  • Certbot-auto 自 2020 年起已被弃用。它已从 haproxy_server 角色中移除。

  • 用于定义 provider_networks 的键 is_container_address 已重命名为 is_management_address,以避免在裸机部署中混淆。向后兼容性已保留。

  • 变量 container_address 已被弃用,取而代之的是 management_address。变量 management_address 自 Victoria 版本起可用,并且默认值为 container_address 的值。

  • 变量 horizon_ssl_self_signed_regenhorizon_ssl_self_signed_subject 已被弃用。Horizon 角色现在使用 ansible-role-pki,因此不再需要它们。

  • 变量 nova_network_typenova_network_services 已被弃用,将来将被静默忽略。如果您需要为特定的网络驱动程序(如 nsx 或 nuage)定义 ovs_bridge 选项,请使用 nova_nova_conf_overrides

  • haproxy_service_configs 格式已简化。现在它只是一个字典列表。在 haproxy_service_configs 元素中使用 service 键已被弃用,将在 2023.2 版本中删除。

错误修复

  • 修复了当主机同时属于 central 和 compute 组时(例如 metal/aio 场景),ceilometer polling_namespaces 的错误定义。

  • 修复了计算节点上缺少 libvirtd.service 的问题。使用 CentOS 将 libvirt 版本升级到 9.3.0 后,他们不再将 libvirt-deamon 作为对 libvirt-deamon-kvm 的依赖项进行安装。libvirt-deamon 现在显式安装。

  • 修复了在 OVN 场景下,neutron-metadata-agent 和 neutron-dhcp-agent 在 network_hosts 上启动的问题,同时 neutron-ovn-metadata-agent 也启动。这些服务将被禁用并屏蔽现有环境。仍然需要手动清理 systemd 服务和相应的 neutron 代理。新的部署将从一开始就停止部署这些服务。

其他说明

  • 在添加 haproxy 基本服务后,不再需要没有 horizon 的部署中的虚拟 letsencrypt 服务,应将其删除。

  • horizon_enable_ssl 已重命名为 horizon_backend_ssl,以保持一致性。

  • horizon_enable_ssl 的默认值已更改为 False。(或者 openstack_service_backend_ssl 如果已定义)

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

  • RabbitMQ 的版本已升级到 3.11.7,Erlang 的版本已升级到 25.2。

  • 在源安装期间使用的服务的 SHA 已从 playbooks/defaults/repo_packages 文件夹移动到与每个单独服务对应的 inventory/group_vars/<service_group>/source_git.yml 文件。

  • Haproxy 服务定义(及其覆盖)不再存储在 haproxy 组变量中。它们已移动到服务变量,例如 glance_haproxy_services 存储在 glance_all 组变量中。

  • haproxy_default_serviceshaproxy_extra_services 的结构已简化。现在它只是一个字典列表。它与 haproxy_service_configs 具有相同的格式。

  • 已在 os_blazar 角色中实现 uWSGI 支持。

  • venv_wheel_build_enable 的默认值已更改。现在,当 venv_build_group 中至少有一个主机时,将构建 wheel。 之前它取决于针对该 play 的主机数量。