[ 英语 | 印度尼西亚语 | 俄语 ]

次要版本升级

OpenStack-Ansible 的次要版本升级需要将仓库克隆更新到最新的次要版本标签,更新 Ansible 角色,然后对目标主机运行 playbook。本节提供这些任务的说明。

先决条件

为了避免问题并简化升级过程中的故障排除,请通过在 user_variables.yml 文件中将 apply_security_hardening 变量设置为 False,并备份您的 OpenStack-Ansible 安装,来禁用安全加固角色。

执行次要版本升级

次要升级通常需要以下步骤

  1. 更改目录到克隆仓库的根目录

    # cd /opt/openstack-ansible
    
  2. 确保您的 OpenStack-Ansible 代码位于最新的 2025.2 (Flamingo) 标记发布版本

    # git checkout 32.0.0.0rc1
  3. 更新所有依赖角色到最新版本

    # ./scripts/bootstrap-ansible.sh
    
  4. 更改到 playbook 目录

    # cd playbooks
    
  5. 更新主机

    # openstack-ansible openstack.osa.setup_hosts -e package_state=latest
    
  6. 更新基础设施

    # openstack-ansible -e rabbitmq_upgrade=true \
    openstack.osa.setup_infrastructure
    
  7. 更新所有 OpenStack 服务

    # openstack-ansible openstack.osa.setup_openstack -e package_state=latest
    

注意

您可以限制升级到特定的 OpenStack 组件。有关详细信息,请参阅以下部分。

升级特定组件

您可以通过对组运行每个组件的 playbook 来限制升级到特定的 OpenStack 组件。

例如,您可以通过运行以下命令仅更新 Compute 主机

# openstack-ansible openstack.osa.nova --limit nova_compute

要仅更新单个 Compute 主机,请运行以下命令

# openstack-ansible openstack.osa.nova --limit <node-name>

注意

跳过 nova-key 标签是必要的,这样就不会收集所有 Compute 主机上的密钥。

要查看哪些主机属于哪些组,请使用 openstack-ansible-inventory-manage 脚本来显示所有组及其主机。例如

  1. 更改目录到仓库克隆根目录

    # cd /opt/openstack-ansible
    
  2. 显示所有组及其所属的主机

    # openstack-ansible-inventory-manage -G
    
  3. 显示所有主机及其所属的组

    # openstack-ansible-inventory-manage -g
    

要查看 playbook 运行的主机以及执行的任务,请运行以下命令(例如)

  1. 查看 playbook 运行的 nova_compute 组中的主机

    # openstack-ansible openstack.osa.nova --limit nova_compute \
                                            --list-hosts
    
  2. 查看在 nova_compute 组中的主机上执行的任务

    # openstack-ansible openstack.osa.nova --limit nova_compute \
                                            --skip-tags 'nova-key' \
                                            --list-tasks
    

在相同的 OpenStack-Ansible 版本中升级特定组件

有时您可能需要在保持在相同的稳定分支上,应用服务的最新安全补丁或错误修复。这可以通过覆盖该服务的 Git 安装分支来完成,这将指示 OpenStack-Ansible 从您正在跟踪的分支拉取最新的代码。但是,直接将分支作为 <service>_git_install_branch 使用强烈不建议。每次重新运行 playbook 时,该服务可能会升级到更新的提交,这可能导致主机之间版本不一致(例如,在稍后添加新的计算节点时)。

因此,推荐的做法是获取所需稳定分支的 HEAD 提交 SHA,并显式设置它。要查找 stable/2025.1 分支的最新 SHA,您可以运行(例如,对于 Nova)

git ls-remote https://opendev.org/openstack/nova refs/heads/stable/2025.1

并在您的配置中使用该 SHA,以确保所有主机上的版本一致,在您的 user_variables.yml

nova_git_install_branch: {{SHA}}

并运行

openstack-ansible openstack.osa.nova --tags nova-install

playbook 将获取并安装来自指定分支或提交 SHA 的代码,应用最新的补丁和修复程序。使用固定的 SHA 可确保所有主机上的版本一致,而直接跟踪分支将始终拉取其当前的 HEAD。

我们可以在升级前后验证服务的版本(不要忘记加载所需的环境变量)

$ ansible -m shell -a '/openstack/venvs/nova-{{ openstack_release }}/bin/pip3 freeze | grep nova' nova_all
infra1-nova-api-container-e5dbbe38 | CHANGED | rc=0 >>
nova==31.0.1.dev12
infra2-nova-api-container-0c5d0203 | CHANGED | rc=0 >>
nova==31.0.1.dev12
infra3-nova-api-container-d791a43e | CHANGED | rc=0 >>
nova==31.0.1.dev12
compute | CHANGED | rc=0 >>
nova==31.0.1.dev12

升级到相同分支的最新补丁后

$ ansible -m shell -a '/openstack/venvs/nova-{{ openstack_release }}/bin/pip3 freeze | grep nova' nova_all
infra1-nova-api-container-e5dbbe38 | CHANGED | rc=0 >>
nova==31.1.1.dev9
infra2-nova-api-container-0c5d0203 | CHANGED | rc=0 >>
nova==31.1.1.dev9
infra3-nova-api-container-d791a43e | CHANGED | rc=0 >>
nova==31.1.1.dev9
compute | CHANGED | rc=0 >>
nova==31.1.1.dev9

注意

这种方法不限于 Nova。您可以通过覆盖其相应的 <service>_git_install_branch 变量,将相同的方法应用于 OpenStack-Ansible 管理的任何其他 OpenStack 服务。

在继续之前,请始终确保分支是最新的并且与您的其余部署兼容。