Train 系列发布说明

20.2.0

序言

这是一个小的错误修复版本,对角色进行了整体改进和错误修复。

新特性

  • 添加了变量 nova_scheduler_extra_filters,允许扩展默认的 nova_scheduler_default_filters 列表

  • 添加了 Magnum 的 keystone_auth_default_policy.json 文件的部署。

  • 添加了变量 cinder_active_active_clustercinder_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_templatesmagnum_flavors,允许部署者在角色执行期间定义 coe 集群模板和 nova flavors 创建。这些变量可以包含要添加的资源列表。可以通过列表中的项目传递适当的 ansible 模块支持的所有键。

20.1.0

新特性

  • 如果定义了变量``ceph_keyrings_dir``,则从文件中获取 ceph 密钥环。目录中的所有文件都必须具有 .keyring 扩展名,并以其对应的 ceph_client 名称命名。例如,如果 cinder_ceph_clientcinder,则 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_policiesoslomsg_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) 的下一个版本中弃用。

  • 您可能需要使用 cinder-manage 命令将卷迁移到特定的主机。此外,您将需要删除旧的 rbd:volumes 服务,该服务将是陈旧的。

  • horizon_listen_ports 变量已转换为字典,其中包含必需的键 httphttps,以便不仅对 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_port

    • repo_pypiserver_pip_packages

    • repo_pypiserver_package_path

    • repo_pypiserver_bin

    • repo_pypiserver_working_dir

    • repo_pypiserver_start_options

    • repo_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 的唯一有效值现在是 cephdistro。 对于 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

  • 移除 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 取代。