概览 — 什么是 kolla-ansible,适合什么场景
Kolla-ansible 是 OpenStack 官方生态下的容器化部署工具:把 OpenStack 服务打包成生产就绪的容器镜像,用 Ansible 把这些容器部署到多台主机上并管理生命周期。它适合从实验室到生产级私有云(尤其偏好容器化、可重复部署与自动化运维)的场景。官方文档是首要参考。(docs.openstack.org)
部署前的硬性与建议性准备
请确保你在动手前具备:至少一台“部署节点”(用来运行 kolla-ansible/Ansible playbooks)和若干目标主机(controller、compute、storage 等),每台主机具备 root 或 sudo 权限、互相可 SSH(密钥认证最好),双网卡/多网段(如管理网 + 数据网/VM 网络)通常是推荐架构;单节点测试(all-in-one)也可以。内存/磁盘/CPU 要求会随服务规模变化:最小实验环境约 8GB RAM / 40GB 磁盘,但生产环境需要更大资源。官方 quickstart 与部署指南有详细说明。(docs.openstack.org, static.opendev.org)
整体步骤(一目了然的流程)
-
在部署节点准备环境(建议用 python 虚拟环境),安装 kolla-ansible 与依赖。(OpenMetal IaaS)
-
将示例配置拷贝到
/etc/kolla
并编辑globals.yml
、passwords.yml
与 inventory(节点分组、网卡映射等)。(docs.openstack.org) -
生成/调整密码(
kolla-genpwd
/kolla-mergepwd
)。(docs.openstack.org) -
使用
kolla-ansible bootstrap-servers
在目标主机上安装/准备运行时(Docker/Podman、必要包、用户、挂载等)。(docs.openstack.org) -
运行
kolla-ansible prechecks
(检测主机环境)→kolla-ansible pull
(拉取镜像,可选本地 registry)→kolla-ansible deploy
(正式部署)→kolla-ansible post-deploy
(后置配置/初始化)。(Superuser, docs.openstack.org) -
验证(openstack client / Horizon 页面 /基本创建测试)。
下面把关键步骤展开,给出可复制的命令示例和注意点。
详细步骤(命令与配置举例)
1) 部署节点准备(示例:Ubuntu)
在部署节点上创建虚拟环境并安装 kolla-ansible(示例命令,请按你系统调整):
sudo apt update
sudo apt install -y python3-venv python3-pip git
python3 -m venv ~/kolla-venv
source ~/kolla-venv/bin/activate
pip install --upgrade pip setuptools
pip install kolla-ansible
# 或者从源码安装以便对应特定 release:git clone https://opendev.org/openstack/kolla-ansible
建议使用虚拟环境来避免系统包冲突。官方 quickstart 给出类似流程。(OpenMetal IaaS, docs.openstack.org)
2) 拷贝并编辑配置文件
把示例配置目录拷贝到 /etc/kolla
(路径随发行版略有不同):
# 在安装了 kolla-ansible 的环境中
sudo mkdir -p /etc/kolla
sudo cp -r $(python -c "import kolla_ansible; import os; print(os.path.join(os.path.dirname(kolla_ansible.__file__), '..', 'etc_examples', 'kolla'))") /etc/kolla
(如果用包安装路径不同,可用文档里给的 cp 命令。)编辑 /etc/kolla/globals.yml
,把关键变量设置为你的网络与行为,例如 kolla_base_distro
、openstack_release
、network_interface
、neutron_external_interface
、kolla_internal_vip_address
(如果 HA 使用 VIP)等。官方文档说明了常用变量与含义。(docs.openstack.org)
3) 生成与管理 secrets(passwords.yml)
把示例 passwords.yml
复制到 /etc/kolla
,然后生成随机密码:
cd /etc/kolla
cp /usr/local/share/kolla-ansible/etc_examples/kolla/passwords.yml ./passwords.yml
kolla-genpwd -p /etc/kolla/passwords.yml
# 或直接运行 kolla-genpwd(有些版本会就地修改)
如果是已有云并升级,要用 kolla-mergepwd
合并旧密码和新生成的密码(避免创建新密码导致服务无法访问)。务必备份 /etc/kolla/passwords.yml
,权限设为 0640。(docs.openstack.org)
4) 编写 inventory(示例:multinode)
在 /etc/kolla
下创建 multinode
(或 all-in-one)inventory 文件,示例(简化):
[control]
controller1 ansible_host=10.0.0.11
[compute]
compute1 ansible_host=10.0.0.21
[storage]
storage1 ansible_host=10.0.0.31
[all:vars]
ansible_user=ubuntu
# 可在 globals.yml 设定网络接口名或这里指定
编辑好 inventory 后,从部署节点测试连通性:
ansible -i /etc/kolla/multinode all -m ping
官方文档与示例 inventory 提供了更详细的网卡、路由、bond、bridge 等字段说明。(readthedocs.access-ci.org)
5) bootstrap、prechecks 与部署(关键命令)
在部署节点(虚拟环境激活)运行:
# 可先准备目标主机(安装 docker/依赖)
kolla-ansible -i /etc/kolla/multinode bootstrap-servers
# 检查环境是否满足部署条件
kolla-ansible -i /etc/kolla/multinode prechecks
# 可选:拉取镜像到本地主机(或使用本地 registry)
kolla-ansible -i /etc/kolla/multinode pull
# 正式部署
kolla-ansible -i /etc/kolla/multinode deploy
# 部署后的初始化(创建服务账号、数据库迁移等)
kolla-ansible post-deploy
bootstrap-servers
会在目标主机上安装/准备运行时(比如 Docker/Podman、必要的包、kolla 用户、目录结构等),是必经步骤之一;prechecks
会提示常见配置问题,deploy
是实际启动容器。(docs.openstack.org, Superuser)
6) 验证与常用后续操作
部署完成后,用 openstack CLI 或 Horizon 登录并做基本验证(创建网络、实例等)。常用命令:
# 检查容器状态(示例用 docker)
docker ps --filter name=kolla
# 或使用 podman、systemctl 等,依你选择的 runtime 而定
# 验证 openstack 服务
openstack --os-cloud admin token issue
若使用 Horizon,访问 http(s)://<horizon_host>/
(在 globals.yml 指定外部地址与 TLS)。部署完成后务必备份 /etc/kolla
中的 configs 与 passwords。(cdn.maingear.com)
生产环境建议(要点)
如果用于生产,请额外考虑:使用本地镜像 registry(减少拉取时间、便于镜像管控);为关键服务(RabbitMQ、MariaDB、Keystone、Glance、Cinder、Neutron DB 等)设计 HA 与备份;监控(Prometheus + Grafana)与日志聚合;安全(TLS、最小权限、vault 管理 passwords)。Kolla 支持把镜像指向本地 registry,并有操作/升级建议文档。(docs.openstack.org)
常见问题与排错方向
如果出现失败:查看 Ansible 的 PLAY RECAP、查看容器日志(docker logs
/ podman logs
)、确认 inventory 中主机名/IP 与 /etc/hosts
或 DNS 一致、检查 globals.yml
中网卡配置、确认 passwords.yml
没有丢失或权限错误。官方文档、release notes 与社区帖子(如 Superuser / OpenInfra 文章)是很好的参考。(docs.openstack.org, Superuser)
资料链接(官方为主)
我参考并强烈建议阅读并按你要部署的 OpenStack 版本对应的官方 Kolla-ansible quickstart 和部署文档(不同 OpenStack 发行/年份变量与支持的 Ansible/Distro 版本可能不同):官方 quickstart / user guide、bootstrap 与 operating 文档。(docs.openstack.org)
评论区