Operating Kolla¶
工具版本控制¶
Kolla 和 Kolla Ansible 使用 x.y.z 语义化版本控制 命名规范来命名版本,主版本号随着每个新系列(例如,Wallaby)的增加而增加。这些工具旨在分别构建和部署 OpenStack 服务在该系列中的 Docker 镜像。建议用户运行目标系列工具的最新版本,最好直接从 Git 仓库的相关分支安装,例如:
pip3 install --upgrade git+https://opendev.org/openstack/kolla-ansible@stable/2025.2
已部署镜像的版本¶
默认情况下,Kolla Ansible 将使用嵌入在内部配置 (openstack_release) 中的系列名称进行部署或升级,除非使用本地注册表和自定义版本控制策略(例如,当用户希望控制服务升级的时间和版本,可能按服务为基础,但这是一个高级用例场景),否则不建议修改此设置。
升级流程¶
注意
此流程用于从一个系列升级到另一个系列,而不是在系列内部进行更新。在系列内部,通常只需更新 kolla-ansible 包,重建(如果需要)并拉取镜像,然后再次运行 kolla-ansible deploy 即可。请遵循发行说明,以检查是否有需要注意的问题。
注意
如果您已将 enable_cells 设置为 yes,则应阅读 Nova cells 指南 中的升级说明。
Kolla 的升级策略是绝不造成混乱,并在部署过程中遵循一致的模式,以便从一个环境到下一个环境的升级易于自动化。
Kolla Ansible 实现了用于升级现有部署的单命令操作。
限制和建议¶
警告
请注意,不建议使用 ansible --limit 选项。原因是,已知它存在一些错误,例如在 升级 nova 的一部分 时。我们接受此问题的错误报告,并在已知问题时尝试修复。核心问题在于 register: 关键字的工作方式以及它与 --limit 选项的交互方式。您可以在上述错误报告中找到更多信息。
注意
请注意,当 use_preconfigured_databases 标志设置为 "yes" 时,您的数据库管理员需要在执行升级之前将 log_bin_trust_function_creators 设置为 1。
注意
如果您为 nova 和 cinder 设置了单独的密钥,请确保在 /etc/kolla/globals.yml 中设置 ceph_nova_user: nova
准备工作(前言)¶
在准备升级计划并做出任何决定之前,请阅读您要升级到的系列的 发行说明,尤其是我们为您发布的 升级说明,以便您了解和注意。
在开始之前,备份您的配置。在操作员/部署节点上,将 config 目录(默认情况下为 /etc/kolla)的内容复制到备份位置(或使用版本控制工具,如 git,以安全地保存配置的先前版本)。
准备工作(真正的操作)¶
首先,升级 kolla-ansible 包
pip3 install --upgrade git+https://opendev.org/openstack/kolla-ansible@stable/2025.2
注意
如果您是从 Git 仓库运行,则只需签出所需的分支并运行 pip3 install --upgrade,并指定仓库目录。
如果执行跳级(SLURP)升级,请更新 ansible 或 ansible-core 到您要升级到的版本支持的版本。
pip3 install --upgrade 'ansible-core>=2.18,<2.19.99'
如果升级到 Yoga 版本或更高版本,请安装或升级 Ansible Galaxy 依赖项
kolla-ansible install-deps
部署的 inventory 文件应更新,因为较新的示例 inventory 文件可能具有更新的布局或其他相关更改。 diff 工具(或类似工具)是这项任务的朋友。如果使用虚拟环境,示例 inventory 文件位于 /path/to/venv/share/kolla-ansible/ansible/inventory/,否则它们很可能位于 /usr/local/share/kolla-ansible/ansible/inventory/。
可能需要手动更新的其他文件是
/etc/kolla/globals.yml/etc/kolla/passwords.yml
对于 globals.yml,最好遵循上述发行说明。对于 passwords.yml,需要使用 kolla-mergepwd 和 kolla-genpwd 工具。
kolla-mergepwd --old OLD_PASSWDS --new NEW_PASSWDS --final FINAL_PASSWDS 用于合并来自旧安装的密码和新生成的密码。工作流程是
将
/etc/kolla/passwords.yml中的旧密码保存到passwords.yml.old。通过
kolla-genpwd生成新密码,作为passwords.yml.new。将
passwords.yml.old和passwords.yml.new合并到/etc/kolla/passwords.yml。
例如
cp /etc/kolla/passwords.yml passwords.yml.old
cp kolla-ansible/etc/kolla/passwords.yml passwords.yml.new
kolla-genpwd -p passwords.yml.new
kolla-mergepwd --old passwords.yml.old --new passwords.yml.new --final /etc/kolla/passwords.yml
注意
kolla-mergepwd 默认情况下会保留旧的、未使用的密码。要更改此行为并删除这些条目,请在调用 kolla-mergepwd 时使用 --clean 参数。
运行以下命令以在新主机上拉取新镜像
kolla-ansible pull
还建议运行预检查以识别潜在的配置问题
kolla-ansible prechecks
在方便的时间,现在可以运行升级。
SLURP 额外准备¶
RabbitMQ 每年发布两个主要版本,但不支持在一个升级中跳过两个版本。因此,如果您想执行跳级升级,则必须首先将 RabbitMQ 升级到中间版本。请参阅 RabbitMQ SLURP 部分 以获取详细信息。
执行升级¶
要执行升级
kolla-ansible upgrade
完成此命令后,将从新镜像重新创建容器,并为您执行所有数据库模式升级和类似操作。
CLI 命令补全¶
Kolla Ansible 支持 shell 命令补全,以使 CLI 更易于使用。
要启用 Bash 补全,请生成补全脚本
kolla-ansible complete --shell bash > ~/.kolla_ansible_completion.sh
然后,将以下行添加到您的 ~/.bashrc 文件中
source ~/.kolla_ansible_completion.sh
最后,重新加载您的 shell 配置
source ~/.bashrc
注意
如果您使用的是 Bash 以外的 shell,请将 --shell bash 替换为您的 shell 类型,例如 zsh,并相应地调整 shell 的配置文件。
技巧和窍门¶
Kolla Ansible CLI¶
kolla-ansible deploy -i INVENTORY 用于部署和启动所有 Kolla 容器。
kolla-ansible destroy -i INVENTORY 用于清理集群中的容器和卷。
kolla-ansible mariadb_recovery -i INVENTORY 用于恢复完全停止的 mariadb 集群。
kolla-ansible prechecks -i INVENTORY 用于检查在部署每个 OpenStack 服务之前是否满足所有要求。
kolla-ansible post-deploy -i INVENTORY 用于在部署节点上进行部署后操作,以获取管理员 openrc 文件。
kolla-ansible pull -i INVENTORY 用于拉取容器的所有镜像。
kolla-ansible reconfigure -i INVENTORY 用于重新配置 OpenStack 服务。
kolla-ansible upgrade -i INVENTORY 用于升级现有的 OpenStack 环境。
kolla-ansible stop -i INVENTORY 用于停止正在运行的容器。
kolla-ansible deploy-containers -i INVENTORY 用于检查并在必要时更新容器,而不生成配置。
kolla-ansible prune-images -i INVENTORY 用于清理主机上的孤立 Docker 镜像。
kolla-ansible genconfig -i INVENTORY 用于生成已启用 OpenStack 服务的配置文件,而不立即重启容器,因此不会立即应用。
kolla-ansible validate-config -i INVENTORY 用于验证已启用 OpenStack 服务的生成的配置文件。默认情况下,当检测到问题时,结果会保存到 /var/log/kolla/config-validate。
kolla-ansible ... -i INVENTORY1 -i INVENTORY2 可以通过多次传递 --inventory 或 -i 命令行选项来指定多个 inventory。这对于在多个环境之间共享配置非常有用。任何公共配置都可以在 INVENTORY1 中设置,而 INVENTORY2 可用于设置特定于环境的详细信息。
kolla-ansible gather-facts -i INVENTORY 用于收集 Ansible facts,例如填充 fact 缓存。
使用 Hashicorp Vault 进行密码存储¶
Hashicorp Vault 可以用作 Kolla Ansible 生成的密码的 Ansible Vault 的替代品。要将 Hashicorp Vault 用作密钥存储,您首先需要生成密码,然后可以将它们保存到现有的 KV 中,使用以下命令
kolla-writepwd \
--passwords /etc/kolla/passwords.yml \
--vault-addr <VAULT_ADDRESS> \
--vault-token <VAULT_TOKEN>
注意
有关 kolla-writepwd 参数的完整列表,请在调用 kolla-writepwd 时使用 --help 参数。
要从 Hashicorp Vault 读取密码并生成 passwords.yml
mv kolla-ansible/etc/kolla/passwords.yml /etc/kolla/passwords.yml
kolla-readpwd \
--passwords /etc/kolla/passwords.yml \
--vault-addr <VAULT_ADDRESS> \
--vault-token <VAULT_TOKEN>
工具¶
Kolla 附带了几个旨在促进易于操作的实用工具。
tools/cleanup-containers 用于从系统中删除已部署的容器。当您想要执行新的干净部署时,这非常有用。它将保留注册表和注册表中本地构建的镜像,但会从本地 Docker 守护程序中删除所有正在运行的 Kolla 容器。它还会删除命名的卷。
tools/cleanup-host 用于删除在启动 neutron-agents 容器时在 Docker 主机上触发的网络更改的残留物。当您想要执行新的干净部署时,特别是更改网络拓扑的部署时,这非常有用。
tools/cleanup-images --all 用于从本地 Docker 缓存中移除 Kolla 构建的所有 Docker 镜像。