Liberty 系列发布说明

12.2.5

错误修复

  • 修复 run-upgrade.sh,使其正确调用 nova-flavor-migration.yml,不再因不存在的 playbook nova-extra-migrations.yml 而失败。

12.2.4

新特性

  • AIDE 在执行数据库初始化和执行检查时,配置为跳过整个 /var 目录。这可以减少磁盘 I/O,并使这些任务完成得更快。

    这也允许初始化成为一个阻塞过程,Ansible 将等待初始化完成,然后再运行下一个任务。

  • 虽然 STIG 要求记录恶意的网络包,但默认情况下现在已禁用记录。日志会迅速填满 syslog 服务器或使物理控制台无法使用。

    需要启用此日志记录的部署者需要设置以下 Ansible 变量

    security_sysctl_enable_martian_logging: yes
    

升级说明

  • 升级 playbook nova-flavor-migration.yml 将执行 nova flavor 数据的迁移。在升级到 Liberty 之前需要完成此操作。建议从 eol-kilo 标签部署 Kilo,然后再升级到 Liberty,以确保成功完成此任务。

    此升级任务与 bug 1594584 相关。

  • 所有自主访问控制 (DAC) 审计默认情况下均已禁用。这减少了部署和次要升级期间生成的日志量。以下变量现在设置为 no

    security_audit_DAC_chmod: no
    security_audit_DAC_chown: no
    security_audit_DAC_lchown: no
    security_audit_DAC_fchmod: no
    security_audit_DAC_fchmodat: no
    security_audit_DAC_fchown: no
    security_audit_DAC_fchownat: no
    security_audit_DAC_fremovexattr: no
    security_audit_DAC_lremovexattr: no
    security_audit_DAC_fsetxattr: no
    security_audit_DAC_lsetxattr: no
    security_audit_DAC_setxattr: no
    
  • 提供了新的覆盖,以允许更好地自定义日志文件保留和 UDP/TCP 套接字的速率限制。 rsyslog_server_logrotation_window 默认为 14 天 rsyslog_server_ratelimit_interval 默认为 0 秒 rsyslog_server_ratelimit_burst 默认为 10000

  • rsyslog.conf 现在使用 v7+ 样式的配置设置

错误修复

  • 由于 /run 目录中的文件和目录只是临时文件,并且在服务启动和停止时经常更改,因此从 AIDE 检查中排除该目录。

  • 现在,只要将 initialize_aide 设置为 yes,AIDE 初始化始终会在后续 playbook 运行中运行。如果未安装 AIDE 或 AIDE 数据库已存在,则将跳过初始化。

    有关更多详细信息,请参阅 bug 1616281

  • auditd 规则用于审计 V-38568(文件系统挂载),在 auditd 日志中被错误地标记为键 export-V-38568。现在它们使用键 filesystem_mount-V-38568 正确记录。

12.2.2

已知问题

  • 对于早于 12.2.2 的 OpenStack-Ansible Liberty 版本,默认的容器 apt 源是 https://mirror.rackspace.com/ubuntu。此镜像有时似乎存在损坏的软件包索引或缺少软件包。因此,默认软件包源已更改为使用 http://archive.ubuntu.com/ubuntu 获取软件包,并使用 http://security.ubuntu.com/ubuntu 获取安全软件包。

升级说明

  • 默认容器 apt 源已从使用 https://mirror.rackspace.com/ubuntu 更改为使用 http://archive.ubuntu.com/ubuntu 获取软件包,并使用 http://security.ubuntu.com/ubuntu 获取安全软件包。这是为了解决由于镜像更新不完整而导致安装过程中软件包不可用的问题。

错误修复

  • 已从 xtrabackup 选项中删除了 --compact 标志。已知这会导致某些 SST 情况下的崩溃

12.2.0

新功能

  • 已添加一个新变量,允许部署者通过处理程序控制容器的重启。这个新选项是 lxc_container_allow_restarts,默认值为 true。如果部署者希望禁用自动重启功能,可以将此值设置为 false,则非绝对必需的自动容器重启将被禁用。

  • py_pkgs lookup 插件现在对需求文件发现具有严格的排序。这些文件用于添加额外的需求到发现的 python 包中。顺序由常量 REQUIREMENTS_FILE_TYPES 定义,其中包含以下条目:‘test-requirements.txt’、‘dev-requirements.txt’、‘requirements.txt’、‘global-requirements.txt’、‘global-requirement-pins.txt’。此列表中的项目按优先级从低到高排列。

  • repo_build 角色现在提供覆盖应用的上层约束的能力,这些约束来自 OpenStack 和 global-requirements-pins.txt 文件。变量 repo_build_upper_constraints_overrides 可以填充一个上层约束列表。此列表将在约束过程中具有最高优先级,但 git 源代码 SHA 中设置的 pin 除外。

升级说明

  • 在从 Kilo 升级到 Liberty 期间,mariadb/galera 集群的容器和服务的重启被多次触发,导致集群变得不稳定,并且经常无法恢复。这种情况得到了极大的改善,现在我们有严格的控制,使得 galera 容器的重启只需要发生一次,并且以受控、可预测和可重复的方式进行。

错误修复

12.1.0

升级说明

  • 添加了清理任务,以删除 nova 控制台 git 目录 /usr/share/novnc/usr/share/spice-html5,然后再将这些目录克隆到 nova vnc 和 spice 控制台 playbook 中。这对于保证本地修改不会破坏 git 克隆操作(尤其是在升级期间)是必要的。

错误修复

  • 删除旧的 MariaDB apt 源的升级步骤由于破坏了 repo 容器而失败。现在已通过跳过 repo 容器来修复此问题。

12.0.16

新功能

  • 添加的安全角色添加的 audit 规则现在具有键字段,这使得将 audit 日志条目链接到导致其出现的 audit 规则更容易。

  • 已向 os-keystone 角色添加了 Apache MPM 可调参数支持,以便允许 MPM 线程调优。默认值反映了当前的 Ubuntu 默认设置

    keystone_httpd_mpm_backend: event
    keystone_httpd_mpm_start_servers: 2
    keystone_httpd_mpm_min_spare_threads: 25
    keystone_httpd_mpm_max_spare_threads: 75
    keystone_httpd_mpm_thread_limit: 64
    keystone_httpd_mpm_thread_child: 25
    keystone_httpd_mpm_max_requests: 150
    keystone_httpd_mpm_max_conn_child: 0
    

升级说明

  • 从 Kilo 升级到 Liberty 期间,此更改会删除 repo 容器并重新创建它们,以修复依赖项的升级问题。

错误修复

  • 该角色先前没有在生成新规则文件后重启 audit 守护程序。已修复 bug,并且在任何 audit 规则更改后将重启 audit 守护程序。

  • defaults/main.yml 中的基于字典的变量现在是单独的变量。无法按照文档说明更改字典型变量。而是需要覆盖整个字典。部署者必须使用新的变量名才能启用或禁用安全角色应用的安全性配置更改。有关更多信息,请参阅 Launchpad Bug 1577944

  • 默认情况下现在已禁用失败的访问日志记录,并且可以通过将 security_audit_failed_access 更改为 yes 来启用。rsyslog 守护程序定期检查日志文件的存在,此 audit 规则被触发的频率很高,这导致了非常大的 audit 日志。

  • 安全角色先前将 /var/log/audit 中的所有 audit 日志文件的权限设置为 0400,但这会阻止 audit 守护程序写入活动日志文件。这将阻止 auditd 干净地启动或重启。

    该任务现在会删除任何不符合 STIG 要求的权限。任何满足或超过 STIG 要求的日志文件将不会被修改。

  • 当安全角色在 Ansible 的检查模式下运行并且提供了标签时,check_mode 变量没有被设置。任何依赖于该变量的任务都会失败。已修复此 bug,并且 check_mode 变量现在在每次 playbook 运行时都正确设置。

  • 安全角色现在处理包含 Match 语句的 ssh_config 文件。会添加一个标记到配置文件中,任何新的配置项都将添加到该标记下方。此外,每次更改 ssh 配置文件时都会验证该文件。

12.0.15

新功能

  • 部署者现在可以通过在 horizon_nova_extensions_blacklist 变量中提供此类扩展的列表来阻止某些 Nova 扩展,例如

    horizon_nova_extensions_blacklist:
      - "SimpleTenantUsage"
    
  • 已向 config_template action 插件添加了对 MultiStrOps 的支持。此更改更新了解析器以使用 set() 类型来确定给定键中的值是否应呈现为 MultiStrOps。如果使用覆盖在 INI 配置文件中,则使用标准的 yaml 构造“?”作为项目标记来定义 set 类型。

    # Example Override Entries
    Section:
      typical_list_things:
        - 1
        - 2
      multistrops_things:
        ? a
        ? b
    
    # Example Rendered Config:
    [Section]
    typical_list_things = 1,2
    multistrops_things = a
    multistrops_things = b
    
  • 已添加 horizon_apache_custom_log_format 可调参数到 os-horizon 角色,用于更改自定义日志格式。默认值为“combined”。

  • 已添加 keystone_apache_custom_log_format 可调参数,用于更改自定义日志格式。默认值为“combined”。

升级说明

  • 从 Kilo 升级到 Liberty 的 playbook glance-db-storage-url-fix.yml 将迁移 Swift 备份的 Glance 图像数据库表中的所有现有 Swift 备份的 Glance 图像,从 Keystone v2 API URL 迁移到 v3 URL。这将强制 Swift 客户端针对 v3 Keystone URL 运行。旧的 image_locations 表的备份存储在一个新的数据库表中 image_locations_keystone_v3_mig_pre_liberty 中,可以在成功升级到 Liberty 后安全删除。

    此升级任务与 bug 1582279 相关。

错误修复

  • 先前,ansible_managed 变量被用于在 swift.conf 中插入一个包含日期/时间信息的标头。这意味着 swift.conf 在不同的节点上没有相同的 MD5SUM,导致 swift-recon --md5 失败。我们现在插入一段静态文本来解决此问题。

  • /var/lib/libvirt/qemu/save 目录现在是 {{ nova_system_home_folder }}/save 的符号链接,以解决默认位置由 libvirt 管理的保存命令使用,这可能导致在运行大型实例的 nova image-create 时,计算节点的根分区变得满的问题。

12.0.14

新功能

  • openstack-ansible-memcached_server 角色包含一个新的覆盖选项,`memcached_connections`,它会根据 memcached 连接限制数量自动计算,并额外增加 1k 来配置 OS nofile 限制。如果没有正确配置 nofile 限制,memcached 将会崩溃,从而无法支持更高的并行连接 TCP/Memcache 数量。

已知问题

  • Ceilometer 在 Liberty 中不支持 V3 端点,而这些端点是由 OSA 创建的 flavor。要部署 Ceilometer,必须从 Keystone 服务目录中删除一些端点,并替换为 V2 端点。例如,为了使用 Swift pollster 收集 Swift 存储的使用情况指标,需要使用 Swift 端点。有关对服务目录进行这些更改的详细说明,请参阅 OpenStack Liberty 安装指南 <https://docs.openstack.org/liberty>

升级说明

  • 一个新的 nova 管理端点将使用后缀 /v2.1/%(tenant_id)s 注册。可以使用后缀 /v2/%(tenant_id)s 的 nova 管理端点可以手动删除。

错误修复

  • nova 管理端点现在已正确注册为 /v2.1/%(tenant_id)s,而不是 /v2/%(tenant_id)s

12.0.13

新功能

  • 允许设置 Swift 的 fallocate_reserve 选项(以字节为单位),以帮助防止磁盘被填满,并防止由于磁盘空间不足而导致 Swift 无法删除对象的情况。fallocate_reserve 值设置为默认值 10GB。

安全问题

  • 已向 repo_servers 添加一个 sudoers 条目,允许 nginx 用户从 init 脚本停止和启动 NGINX。这确保了 repo 同步过程在从 master 同步数据到 slaves 时可以关闭 NGINX。

错误修复

  • 当连接到尚未完成同步的 slave repo 服务器时,容器可能无法从 repo 服务器检索软件包。有关更多信息,请参阅 https://bugs.launchpad.net/openstack-ansible/+bug/1543146。通过在 lsyncd 中添加 pre 和 post 钩子来解决此问题,以连接到 slave repo 服务器并在同步期间禁用 NGINX。

12.0.12

已知问题

  • Paramiko 2.0 Python 版本需要 Python cryptography 库。必须安装新的系统软件包才能使用此库。对于 OpenStack-Ansible 版本 <12.0.12、<11.2.15、<13.0.2,必须手动在 **部署主机** 上安装系统软件包,方法是执行 apt-get install -y build-essential libssl-dev libffi-dev

错误修复

  • 为了节省磁盘 IO 并减少由于 updatedb/mlocate 文件索引引起的 IOPS 突发,XFS 文件系统被排除在每日 mlocate crond 任务之外。

12.0.11

升级说明

  • MariaDB wait_timeout 设置已降低至 1 小时,以匹配 SQL Alchemy 池回收超时时间,从而防止不必要的数据库会话累积。

12.0.10

新功能

  • haproxy-install.yml playbook 现在将作为 setup-infrastructure.yml 的一部分运行。

  • 除了 LBaaS v1 之外,LBaaS v2 也可用于部署。这两个版本互斥,不能同时运行。部署者如果要在 LBaaS 版本之间切换,则需要重新创建任何现有的负载均衡器。切换到 LBaaS v2 将停止任何现有的 LBaaS v1 负载均衡器。

  • 新的 rabbitmq-server 角色覆盖 rabbitmq_async_threads 默认设置为 128 个线程,用于 RabbitMQ erlang VM 内部的 IO 操作。此设置将 IO 操作的线程数翻倍。

  • 新的 rabbitmq-server 角色覆盖 rabbitmq_process_limit 默认设置为 1048576,用于 erlang VM 内部的并发进程数。每个网络连接和文件句柄都需要 erlang 内部的进程。

  • 默认情况下,依赖 Python 的服务会在虚拟环境中部署。可以在主机或服务部署的容器中的 /openstack/venvs/ 下找到每个服务的虚拟环境。通过覆盖服务特定的变量(例如 cinder_venv_enabled,默认值为 True)来禁用虚拟环境的使用。

已知问题

  • 根据初始 Kilo 部署的时间,repo 服务器可能存在锁定环境的 pip.conf 文件,这限制了可用的软件包。如果存在此文件,由于 repo 服务器尝试构建 Liberty 软件包,将会导致构建失败。

  • 默认情况下,依赖 Python 的服务会在虚拟环境中部署。升级时,主机或容器上安装的任何 Python 软件包不会随版本一起升级,除非禁用了该服务的虚拟环境。系统上可能留下较旧且可能损坏的软件包在虚拟环境之外,这可能会给尝试使用基于 Python 的工具或服务的用户带来困惑。这些剩余软件包可以由操作员手动删除。

升级说明

  • 新的 OpenStack-Ansible 版本不会更改现有的 LBaaS v1 负载均衡器和代理。

  • 从早期 Kilo 版本的 OpenStack-Ansible 升级时,在升级过程中可能需要升级 RabbitMQ 次要版本。这在手动步骤和 run-upgrade.sh 脚本中都有说明。

  • 要修复此问题,需要从所有 repo 服务器中删除 pip.conf 文件。升级 playbook repo-server-pip-conf-removal.yml 如果找到该文件,将从 repo 服务器中删除 pip.conf 文件。

12.0.9

已知问题

  • 对于 OpenStack-Ansible Liberty 版本 <12.0.9 和 Kilo 版本 <11.2.12,由于更新到 v0.8.0 包含不满足 repo 服务器要求的新的依赖项,软件包 pywbem 将无法构建。此问题已在 12.0.9 中解决。解决此问题的办法是在 global-requirement-pins.txt 文件中设置 pywbem<0.8.0

  • 对于 OpenStack-Ansible Liberty 版本 >12.0.7,<12.0.9,OpenStack-Ansible 中 pinned 的 wheel 版本 (0.29.0) 高于 OpenStack 上限 (0.26.0)。这会导致一个问题,即 repo-server 安装可能失败,因为它找不到满足 <0.26.0 和 ==0.29.0 要求的 wheel 版本。解决此问题的办法是在以下文件中更改 wheel 软件包 pin wheel==0.26.0

    • playbooks/inventory/group_vars/hosts.yml

    • requirements.txt

弃用说明

  • repo-clone-mirror.yml 文件已被弃用,立即生效。该 playbook 本身已被更改为不再同步,并且将在 Mitaka 分支中从树中删除。

12.0.8

新功能

  • Ubuntu 有 4 种不同的“组件” - main、universe、multiverse 和 restricted

    • Main:官方支持的软件。

    • Restricted:支持的软件,但不受完全自由许可的限制。

    • Universe:社区维护的软件,即非官方支持的软件。

    • Multiverse:非自由软件。

    默认 apt 源代码配置使用所有组件。如果部署者希望更改此设置以减少配置的组件,则可以在 /etc/openstack_deploy/user_variables.yml 中设置变量 lxc_container_template_apt_components,其中包含所需的完整组件列表。

  • 已实现一个新的变量,称为 lxc_container_cache_files,它包含一个字典列表,用于指定要复制到 LXC 容器缓存的部署主机上的文件以及要分配给复制文件的属性。

已知问题

  • Ubuntu 14.04 提供的 keepalived 版本中存在一个错误,导致所有备份节点具有相同的优先级。这导致在配置了两个以上 keepalived 主机时,自动故障转移失败。为了解决此问题,建议部署者将 keepalived 主机的数量限制为不超过两个,或者为每个主机配置不同的优先级。

  • Neutron 当前不支持在现有网络上干净地启用 port_security 扩展驱动程序。如果在创建网络后启用插件,则连接到这些网络的 VM 将无法启动。有关更多信息,请参阅 bug https://bugs.launchpad.net/neutron/+bug/1509312

升级说明

  • 在升级过程中,新的密钥(例如密码和密钥)将被生成并添加到 /etc/openstack_deploy/user_secrets.yml。现有值不会更改。

  • 配置选项 signing_dir 已从 /var/cache/heat 更改为 /var/lib/heat/cache/heat。这仅适用于使用 PKI 令牌的 heat 部署。

  • 从 Kilo 升级到 Liberty 时,由于启用它后存在已知问题,将不会配置 port_security 扩展驱动程序。

  • 一些变量名称已更改,以反映上游设计决策(例如 Nova 的默认 API 版本),或为了提供清晰度。这需要在 /etc/openstack_deploy/user_*.yml 中更新任何覆盖才能继续工作。有关详细信息,请参阅 升级文档 <https://docs.openstack.org/developer/openstack-ansible/2025.2/upgrade-guide/scripts.html#migrate-openstack-vars-py>

弃用说明

  • Nova 2.1 变量(nova_v21_<variable>)、Heat 名称变量(heat_project_domain_nameheat_user_domain)和 Galera SST 方法(galera_sst_method)变量已更改。有关详细信息,请参阅 升级文档 <https://docs.openstack.org/developer/openstack-ansible/2025.2/upgrade-guide/scripts.html#migrate-openstack-vars-py>

错误修复

  • 多域 LDAP 配置支持的添加遗留了默认域的配置文件,这会导致 Keystone 出现问题。如果部署者不使用带有 LDAP 后端的默认域,则此文件将自动删除。(Bug 1547542

12.0.7

新功能

  • Keystone 的 v3 API 现在是所有服务的默认 API。

  • MariaDB 10.x 现在是 OpenStack-Ansible 中的默认版本。

  • percona-xtrabackup 存储库现在已启用在 OpenStack-Ansible 中,它允许部署者安装和使用 Percona 的 XtraBackup 项目 来执行存储在 MariaDB 中的数据的在线备份。

  • 部署者现在可以通过 galera_wsrep_sst_method 来设置 wsrep 方法。

  • 部署者可以通过配置 galera_wsrep_sst_auth_usergalera_wsrep_sst_auth_password 来指定与 wsrep 身份验证一起使用的凭据。

  • Galera 安装过程已得到优化,完成时间更短。

  • 现在,每个使用 RabbitMQ 的服务都有一个单独的 vhost 和用户。

升级说明

  • ceilometer 告警功能已移动到 aodh。从 /etc/openstack_deploy/env.d/ceilometer.yml 文件中删除了 ceilometer_alarm_notifierceilometer_alarm_evaluator 条目。

  • aodh.yml 和 haproxy.yml 将被复制到 /etc/openstack_deploy/env.d。LBaaS 代理信息将被添加到 /etc/openstack_deploy/env.d/neutron.yml

  • 当 Glance 配置为使用 swift 存储后端时,它将默认通过 glance_swift_store_auth_version 变量使用 Keystone v3 认证。

  • 添加了两个新的选项来处理与 Swift 存储后端的认证 - glance_swift_store_user_domainglance_swift_store_project_domain。两者都设置为 default,如果部署者使用不同的 Keystone 域来认证 swift,可以进行调整。

  • Keystone 的配置已为 liberty 版本更新。一些可能出现在 user_config.yml 文件中的变量可能需要更新。这些变量包括

    • keystone_identity_driver

    • keystone_token_driver

    • keystone_token_provider

    • keystone_revocation_driver

    • keystone_assignment_driver

    • keystone_resource_driver

    • keystone_ldap_identity_driver

    部署者应检查 playbooks/os_keystone/defaults/main.yml 中提供的默认值,并在 user_variables.yml 中存在的情况下调整任何变量。

  • 部署者可以选择从数据库中删除 Keystone v2 端点。这些端点将不会被升级过程删除。

  • Galera 的最大连接数设置现在通过获取可用的 vCPU 数量并乘以 100 来自动确定。部署者可以通过 galera_max_connections 变量覆盖此默认值。

  • OpenStack-Ansible 在以前的版本中提供的自定义 init 脚本已被上游 MariaDB init 脚本取代。

  • 现在提供了 galera_upgrade 变量,以允许 MariaDB 角色更新现有安装。

  • 为了与新的 Neutron 默认值匹配,neutron_driver_network_scheduler 变量的默认值已从 ChanceScheduler 更改为 WeightScheduler。

  • 为了与新的上游驱动程序路径匹配,neutron_driver_quota 变量的默认值已略有更改。

  • LinuxBridge 配置,之前位于 plugins/ml2/ml2_conf.ini 中,现在位于 plugins/ml2/linuxbridge_agent.ini 中。

  • 两个 Neutron 变量已被弃用,现在已从 OpenStack-Ansible 中删除 - neutron_l3_router_delete_namespacesneutron_dhcp_delete_namespaces

  • Nova 项目已将 v2.1 API 设置为默认值,并且这些配置变量已更改。在 Kilo 版本中以 nova_v21_* 开头的变量现在已重命名为 nova_*。所有新的 Liberty 部署都将在服务目录中只注册 v2.1 API。

  • Nova 项目在 liberty 版本中已弃用 S3、v3 和 EC2 API。这些变量已被删除。它们包括以 nova_s3_*nova_ec2_*nova_v3_* 开头的变量。

  • openstack_hosts 角色中以 openstack_host_systat_ 开头的变量已重命名为 openstack_host_sysstat_。这是为了更好地反映它们对 sysstat 的依赖性。

  • 现在,每个使用 RabbitMQ 的服务都有一个单独的 vhost 和用户。共享 / vhost 已清理,仅包含默认数据。共享用户 ‘openstack’ 已删除。

  • Nova 现在使用 Cinder API 的版本 2。Tempest 现在也配置为使用 v2 Cinder API。

  • 升级过程将备份并重新配置 /etc/openstack_deploy 目录。这包括插入新的环境详细信息、更新已更改的变量名称以及生成新添加的密钥。

安全问题

  • glance_digest_algorithm 已从 sha1 更改为 sha256,这提高了存储图像的完整性验证。

错误修复

  • python 包 pipsetuptoolswheel 现在都固定在每个标签的基础上。这些固定随着每个 OpenStack 服务更新而更新。这是为了确保与发布标签时可用的最新软件包保持一致的构建体验。部署者可以通过在 user_variables.yml 中添加所需固定列表的 pip_packages 变量来覆盖这些固定。

12.0.6

新特性

  • Keystone 现在可以配置为使用多个 LDAP 或 Active Directory 身份后端。此功能的配置记录在 Keystone 配置 部分的 安装指南 中。

升级说明

  • keystone_ldap 字典变量的第一层现在与 Keystone 域名称相关。可以通过将 ldap 键重命名为域名称 ‘Default’ 来转换现有的 keystone_ldap 配置条目。**注意** 域名称条目区分大小写。

  • 已删除 keystone_ldap_identity_driver 变量。Keystone 中 LDAP 后端的驱动程序现在只需使用值 ‘ldap’。目前 Keystone 没有其他后端选项。