Train 系列发布说明¶
20.2.0¶
序言¶
这是一个小的错误修复版本,对角色进行了整体改进和错误修复。
新特性¶
添加了变量 nova_scheduler_extra_filters,允许扩展默认的 nova_scheduler_default_filters 列表
添加了 Magnum 的 keystone_auth_default_policy.json 文件的部署。
添加了变量 cinder_active_active_cluster 和 cinder_active_active_cluster_name,允许显式启用或禁用主动/主动功能,并设置集群名称。
升级说明¶
nova_scheduler_default_filters 的字符串值已转换为列表。目前,对于覆盖的字符串值,仍然兼容,但此支持将在 Wallaby 版本中删除。建议部署者将他们的字符串覆盖替换为列表形式。
安全问题¶
MariaDB 版本更新至 10.3.25,涵盖 CVE-2020-2574
错误修复¶
uWSGI 服务重启现在在服务配置更改时能正确触发
如果库存中存在 ceilometer 或 designate 服务,则现在启用通知
修复了 ceph_client 角色在 distro 安装中的问题
由于 Ubuntu 已经放弃了旧的基础镜像,导致所有之前的标签都已损坏,因此我们切换为始终下载最新的可用基础镜像。这应该保证我们只检索相关的镜像。
20.1.2¶
新特性¶
添加了使用 mod_auth_openidc 代替 shibboleth 作为服务提供商的支持,以支持那些更喜欢使用 OIDC 进行联合的用户。Mod_auth_openidc 是 keystone 文档中推荐的用于实现 openidc 的 apache 模块。添加了一个变量 called apache_mod 到 keystone_sp,如果未定义,shibboleth 将继续默认安装,前提是 keystone_sp 不为空。Mod_auth_openidc 不会被安装,除非拼写正确,任何拼写错误都将导致 shibboleth 安装。请注意,在基于 Debian 的 metal distro 部署上安装 shibboleth 可能会破坏依赖于 libcurl4 的服务,因为 shib2 需要 libcurl3,而它们无法共存。当 Ubuntu/Debian 的未来版本中提供 shib3 包时,可以解决此问题。目前不支持同时使用 shibboleth2 和 mod_auth_openidc。
弃用说明¶
Fedora 不再在 CI 中为每次提交进行测试。
20.1.1¶
新特性¶
添加了变量 magnum_cluster_templates 和 magnum_flavors,允许部署者在角色执行期间定义 coe 集群模板和 nova flavors 创建。这些变量可以包含要添加的资源列表。可以通过列表中的项目传递适当的 ansible 模块支持的所有键。
20.1.0¶
新特性¶
如果定义了变量``ceph_keyrings_dir``,则从文件中获取 ceph 密钥环。目录中的所有文件都必须具有
.keyring扩展名,并以其对应的ceph_client名称命名。例如,如果cinder_ceph_client是cinder,则 cinder 密钥环文件必须命名为cinder.keyring。每个文件必须包含用户名和密钥,仅此而已,以下是 cinder.keyring 内容的示例。[client.cinder] key = XXXXXXXXXXX
20.0.2¶
升级说明¶
ceph_client 角色中的变量 libvirt_package 已重命名为 libvirt_packages,并从字符串转换为列表。
20.0.0¶
新特性¶
添加了新的参数
tempest_services,用于自动设置 tempest_service_available_{service_name} 变量。
OSA 使用的 ansible 版本已从 2.7 系列升级到 2.8 系列。这需要将 ceph-ansible 升级到 4.0,进而需要将 ceph 从 Mimic 升级到 Nautilus。如果 OSA 直接使用 ceph-ansible 部署 ceph 基础设施,则此版本依赖关系适用,但当 OSA 与外部配置的 ceph 集群集成时,则不适用。
每个 openstack 服务角色都有一个新的变量 <role>_bind_address,默认值为 0.0.0.0。部署者可以使用全局覆盖 openstack_service_bind_address 在 group_vars 或 user_variables 中定义服务绑定的替代 IP 地址。此功能允许部署者将所有服务绑定到特定的网络,例如 openstack 管理网络。在本版本中,默认绑定仍然是 0.0.0.0,未来的版本可能会将绑定默认设置为管理网络。
您可以使用
repo_centos_epel_mirror作为 repo URL 来设置 epel 的私有仓库,如果您需要从内联网或镜像获取 GPG 密钥,可以使用repo_centos_epel_key作为 gpg 密钥位置。
OpenStack-Ansible 现在支持在 Debian 10 (buster) 上进行部署
如果您使用 Ceph 作为后端存储,Cinder 将默认启用 Active-Active。
传递给 openstack-ansible 的 –extra-vars 标志现在优先于 user-variables*.yml。
添加了变量 horizon_bind_address,用于定义 Apache 在 horizon_listen_ports 上监听的 IP 地址
添加了禁用仪表板中 openrc v2 下载的可能性。新的变量
horizon_show_keystone_v2_rc可以设置为False以删除 openrc v2 下载的条目。
ceph_client 角色现在将查找并配置 manila 服务以与 ceph 和 cephfs 协同工作。
os_masakari角色现在涵盖监视器的安装和配置,完成了完整的服务配置。
可以使用的覆盖
rabbitmq_memory_high_watermark用于设置在触发垃圾回收之前,erlang 虚拟机允许的最大大小。默认值降低到0.2,从0.4,因为垃圾回收操作期间可能需要分配量的 2 倍。这可能导致相当于使用0.4,导致内存使用量达到 40%,这对于 rabbitMQ 容器可见。原始默认设置0.4可能导致 rabbitMQ 内存分配达到 80%,可能导致底层 Linux 内核由于虚拟内存不足而杀死进程。
该角色现在支持使用发行版包来代替 pip 包来获取 OpenStack 服务。此功能默认禁用,可以通过将
octavia_install_method变量设置为distro来启用。
添加了两个新的变量用于所有组 - oslomsg_notify_policies 和 oslomsg_rpc_policies。这些变量包含默认的 rabbitmq 策略,这些策略将应用于每个 rabbitmq vhost。目前,它们将为所有 vhost 启用 [HA 模式](https://rabbitmq.cn/ha.html)。如果您想禁用 HA 模式,只需在 user_config.yml 中将这些变量设置为空列表即可。
部署现在默认使用 python3,如果操作系统中存在 python3 解释器。每个 openstack-ansible 角色都有一个新的变量,形式为 <role>_venv_python_executable,默认值为 python2,但 openstack-ansible 组变量中的全局变量 openstack_venv_python_executable 在支持的操作系统上将其设置为 python3。这使得部署者可以根据需要选择性地使用 python2 或 python3 来为每个服务提供支持。部署主机上的 ansible-runtime venv 也会在可能的情况下从 python2 升级到 python3。
在 gate-check-commit 脚本使用的引导函数中添加了几个环境变量。这些变量可用于在 gate-check-commit 或 bootstrap-ansible 脚本执行期间跳过引导的各个阶段。
添加的环境变量是
SKIP_OSA_RUNTIME_VENV_BUILD:跳过 bootstrap-ansible.sh 中 OSA ansible venv 的引导。SKIP_OSA_BOOTSTRAP_AIO:跳过 gate-check-commit 中 bootstrap-aio playbook 的执行SKIP_OSA_ROLE_CLONE:跳过 bootstrap-ansible.sh 脚本中 get-role-requirements-playbook 的执行
galera_server角色现在使用 mariabackup 来完成 SST 操作,因为这是 MariaDB 推荐的选择。
galera_server角色现在附带最新的 MariaDB 版本 10.3.13。
所有角色都已从使用常规日志文件迁移到 systemd-journald
部署者可能需要在他们的 openstack 主机或服务容器上安装自定义 CA 证书。添加了一个新的变量 openstack_host_ca_certificates,它是一个应该从部署主机复制到目标主机的证书列表。可以通过在 user_variables.yml 或通过主机/组变量中定义该变量来选择性地部署证书。
现在提供了一个新的可选文件 /etc/openstack_deploy/user-role-requirements.yml,供部署者覆盖 upstream ansible-role-requirements 文件中的单个条目。这可用于指向包含本地修复的替代仓库,或添加未在标准 ansible-role-requirements 中指定的补充 ansible 角色。
已知问题¶
由于定义 backend_host 的方式在使用 Ceph 时发生了变化,所有 Cinder 卷都将在相同的 backend 名称下重新启动。这意味着之前分配给托管卷的主机或容器将不再可管理。解决方法是使用 cinder-manage volume update_host 命令将这些卷移动到新的 backend 主机。此已知问题将很快通过升级 playbook 解决。
journald-remote 在 setup-infrastructure 内部的执行被禁用,直到 https://github.com/systemd/systemd/issues/2376 包含在当前的 systemd 包中。可以通过将
journald_remote_enabled设置为True来启用该 playbook
以前跨所有部署使用通用的 backend_host 的方式不被 Cinder 团队推荐,并且会导致重复消息,从而在环境中引起问题。
升级说明¶
使用 OSA/ceph-ansible 工具部署的任何 ceph 基础设施组件(OSD、MON 等)都将被升级到 Ceph Nautilus 版本。部署者应在开始升级到 Train 的重大升级之前,验证此升级是否适合他们的环境,并查阅 ceph-ansible 和 ceph Nautilus 版本的发行说明。对于与外部 ceph 集群的集成,其中 OSA 不部署任何 ceph 集群基础设施,可以使用覆盖来选择 OSA ceph_client ansible 角色使用的特定版本的 ceph 仓库。
应用程序凭据现在默认启用为 keystone 身份验证方法。如果部署不想启用应用程序凭据,则可以覆盖现有的 keystone_auth_methods 变量,以使用所需的身份验证方法集。
在 OpenStack-Ansible Train 版本中,您应该将 Debian 从 9 (stretch) 升级到 10 (buster)。Debian 9 支持将在 OpenStack-Ansible (Ussuri) 的下一个版本中弃用。
journald-remote playbook 在 setup-infrastructure 内部的执行被禁用,直到将
journald_remote_enabled设置为True,因为 https://github.com/systemd/systemd/issues/2376
您可能需要使用 cinder-manage 命令将卷迁移到特定的主机。此外,您将需要删除旧的
rbd:volumes服务,该服务将是陈旧的。
horizon_listen_ports 变量已转换为字典,其中包含必需的键 http 和 https,以便不仅对 apache ports.conf 文件,而且对虚拟主机产生影响。
rabbitmq 高水位线设置为
0.2而不是0.4,以防止可能的 OOM 情况,这限制了 rabbitMQ 可以使用的最大内存量为内存的 40%,而不是 rabbitMQ 容器可见的 80%。可以使用覆盖rabbitmq_memory_high_watermark来更改限制。
默认 nova 控制台类型已更改为 novnc。Spice 仍然受支持,但是由于 novnc 维护更积极,因此现在是更好的默认选项。
新的虚拟环境将使用 python3 创建,从而在重大升级期间实现从 python2 到 python3 的平稳过渡。部署主机上的 ansible-runtime 虚拟环境也会在操作系统允许的情况下从 python2 升级到 python3。
默认的 Mnesia
dump_log_write_threshold值已更改为300,而不是100,以提高效率。dump_log_write_threshold指定允许写入事务日志的最大写入次数,然后执行日志的新转储。 增加此值可以在队列/交换机/绑定创建/销毁期间提高性能。 该值应在 100 到 1000 之间。 更多详情 [1]。[1] https://erlang.org.cn/doc/man/mnesia.html#dump_log_write_threshold
为了使用新的选项 rabbitmq_port_bindings 直接配置绑定地址和端口,已移除选项 rabbitmq_disable_non_tls_listeners。 此新选项是一个哈希,允许进行多个绑定地址和端口配置。
仓库服务器不再使用 pypiserver,因此已将其移除。 随之而来,以下变量也被移除。
repo_pypiserver_portrepo_pypiserver_pip_packagesrepo_pypiserver_package_pathrepo_pypiserver_binrepo_pypiserver_working_dirrepo_pypiserver_start_optionsrepo_pypiserver_init_overrides
以下 Nova 可调参数已被移除,用户需要开始使用 nova_nova_conf_overrides 字典来覆盖它们。 如果之前没有覆盖这些值,则无需覆盖它们。 - nova_quota_cores - nova_quota_injected_file_content_bytes - nova_quota_injected_file_path_length - nova_quota_injected_files - nova_quota_instances - nova_quota_key_pairs - nova_quota_metadata_items - nova_quota_ram - nova_quota_server_group_members - nova_quota_server_groups - nova_max_instances_per_host - nova_scheduler_available_filters - nova_scheduler_weight_classes - nova_scheduler_driver - nova_scheduler_driver_task_period - nova_rpc_conn_pool_size - nova_rpc_thread_pool_size - nova_rpc_response_timeout - nova_force_config_drive - nova_enable_instance_password - nova_default_schedule_zone - nova_fatal_deprecations - nova_resume_guests_state_on_host_boot - nova_cross_az_attach - nova_remove_unused_resized_minimum_age_seconds - nova_cpu_model - nova_cpu_model_extra_flags
以下 Nova 变量已被移除,因为它们在当前版本的 Nova 中无效。 - nova_max_age - nova_osapi_compute_workers - nova_metadata_workers
Tacker 角色现在使用默认的 systemd_service 角色。 因此,不再支持 upstart。 添加了变量 tacker_init_config_overrides,部署者可以使用它来覆盖预定义的选项。 此外,变量 program_override 现在无效,并且 tacker_service_names 已被移除,取而代之的是 tacker_service_name。
Gnocchi 已从使用 Apache mod_wsgi 或本机守护进程迁移到 uWSGI 守护进程。 这意味着,某些变量不再可用且不再生效,具体如下: * gnocchi_use_mod_wsgi * gnocchi_apache_* * gnocchi_ssl*(除 gnocchi_ssl_external 之外 - 它仍然存在) * gnocchi_user_ssl_*
在升级过程中,角色将从 apache 监听器(ports.conf)和 gnocchi 虚拟主机中删除 gnocchi_service_port,默认情况下这意味着配置错误的 apache 服务(因为它将没有监听器),除非它是 aio 构建,并且此 apache 服务器被其他角色/服务使用。 Apache 服务器不会从 gnocchi_api 主机中删除,因此鼓励部署者手动删除它。
Panko 已从使用 Apache mod_wsgi 或本机守护进程迁移到 uWSGI 守护进程。 这意味着,panko_apache_* 变量不再可用且不再生效。
在升级过程中,角色将从 apache 监听器(ports.conf)和 panko 虚拟主机中删除 panko_service_port,默认情况下这意味着配置错误的 apache 服务(因为它将没有监听器),除非它是 aio 构建,并且此 apache 服务器被其他角色/服务使用。 Apache 服务器不会从 panko_api 主机中删除,因此鼓励部署者手动删除它。
弃用说明¶
在
ceph_client角色中,ceph_pkg_source的唯一有效值现在是ceph和distro。 对于 Ubuntu,Ubuntu Cloud Archive apt 源已经由openstack_hosts角色设置,因此无需由ceph_client角色再次设置。
由于 MariaDB 不再推荐,因此已移除
galera_server角色中的压缩选项。 这意味着来自 Percona 的所有依赖项,例如 QPress,不再是必需的。
以下变量已被移除,因为它们不再使用。 *
galera_percona_xtrabackup_repo*use_percona_upstream*galera_xtrabackup_compression*galera_server_percona_distro_packages
变量
galera_xtrabackup_threads已重命名为galera_mariabackup_threads,以反映 SST 提供程序的更改。
PowerVM 驱动程序已被移除,因为它未经测试,并且自 2016 年底以来一直损坏,因为驱动程序名称已重命名为 powervm_ext,而不是 powervm。
已停止对旧版 neutron L3 工具的支持。 鼓励部署者使用内置的 l3-agent 选项来配置 HA。
已从 Neutron 角色中移除已弃用的 Neutron LBaaS v2 插件。
已从 openstack-ansible 中移除对已弃用的 Neutron LBaaS v2 插件的支持。
nova-placement-api 已从 os_nova 角色中移除,以及所有 nova_placement_* 变量。 请查看 os_placement 角色,了解有关如何配置新放置服务的更多信息。
nova-lxd 驱动程序不再受上游支持,并且其源代码的 git 仓库已在主分支上退役。 所有用于部署或测试 nova-lxd 的代码都已从 os_nova ansible 角色中移除。 以下变量已被移除
nova_supported_virt_types ‘lxd’ 列表条目
nova_compute_lxd_pip_packages
lxd_bind_address
lxd_bind_port
lxd_storage_backend
lxd_trust_password
lxd_storage_create_device
lxd_trust_password
移除 magnum 模块。 请使用 ansible 本机模块 ‘os_coe_cluster_template’。 更多信息: https://docs.ansible.org.cn/ansible/2025.2/modules/os_coe_cluster_template_module.html 此模块未在 openstack 仓库中使用,因此不需要更新。
移除 netloc、netloc_no_port 和 netorigin 过滤器。 请使用 urlsplit 过滤器。 openstack 仓库中所有已弃用过滤器的用法都已更新。
由于使用 systemd-journald,/openstack/log/ 到 /var/log/$SERVICE 的映射不再存在。 此外,由于日志存储在 journald 中,因此不再为项目调用 rsyslog_client 角色。 此外,诸如 service_log_dir 之类的变量不再受支持且无效。
错误修复¶
在计算节点上运行的 ceilometer-polling 服务没有配置轮询命名空间。 因此,它们使用了默认值,即从中央和计算命名空间运行所有轮询器。 但是,来自中央命名空间的轮询器不必在每个计算节点上运行。 通过仅在计算节点上运行计算轮询器来修复此问题。
RyuBgpDriver 不再可用,并被 neutron_dynamic_routing 项目的 OsKenBgpDriver 取代。