第一篇 基于BC-Linux21.10一键部署 OpenStack Flamingo (2025.2)版(离线)(魔改)
适用于 BC-Linux for Euler / openEuler 宿主机,支持有网/无网环境自适应,仅供测试学习,不要部署到生产环境。
一、这个脚本是干嘛的
在 5 台服务器上自动部署 OpenStack Flamingo (2025.2)(控制/网络/计算/存储),不需要你手动配 Docker、Registry、Kolla-Ansible、网络、存储。
你只需做三件事:
-
把离线包上传到控制节点
-
执行脚本
-
按提示输入 5 个节点的管理网 IP
剩下的全部自动完成。
二、为什么要写这个脚本
在我的测试环境BC-Linux21.10中部署 OpenStack Flamingo (2025.2) 时,遇到一堆官方文档没提到的问题,比如:(我是基于kolla-ansible Yoga模板搞的,可能走了弯路)
2.1 宿主机和容器镜像"不配套"
-
宿主机是 BC-Linux for Euler(基于 openEuler)
-
容器镜像是 CentOS Stream 10
-
官方不支持这个组合,导致一堆兼容性问题
2.2 MariaDB 11.4 启动失败
CentOS Stream 10 容器里的 MariaDB 是 11.4 版本,但 OpenStack Yoga 官方只支持 10.x。mysqld_safe 命令被移除了,容器启动就报错。
2.3 Horizon 登录页 500
Horizon 容器启动时会执行 collectstatic 和 compress 生成 CSS/JS 文件,但生成的子目录默认权限是 750 root:root,Apache 工作进程(UID 48)进不去,一访问登录页就报 500。
2.4 Python 路径写死 3.6
kolla-ansible Yoga 模板里对 CentOS 写死了 python3.6,但 CentOS Stream 10 实际是 python3.12,导致 WSGI 脚本找不到。
2.5 Django 4.2 兼容性
CentOS Stream 10 容器里的 Django 是 4.2,但 Yoga 模板里还在用 Django 3.2 的语法(ugettext_lazy、MemcachedCache),直接 ImportError。
2.6 Glance sanity check 403
Glance 的镜像列表检查使用 system-scoped token,但 Glance 中间件不支持,返回 403 Forbidden。
三、脚本怎么解决这些问题(思路可以参考)
3.1 镜像层修复(构建时)
在 Dockerfile 中直接修复容器镜像:
-
创建
mysqld_safe → mariadbd-safe软链接 -
在
collectstatic/compress执行后注入chmod -R a+rwX -
替换
python3.6为python3.12
3.2 配置层修复(部署前)
修改 kolla-ansible 模板:
-
distro_python_version_map增加 CS10 → 3.12 映射 -
local_settings中ugettext_lazy→gettext_lazy -
MemcachedCache→PyMemcacheCache -
openstack_glance_auth改为 project-scoped
3.3 运行时兜底(部署后)
如果镜像层修复没生效(比如容器重启后权限丢失),脚本会在宿主机上直接写 overlay2 merged dir 覆盖权限,确保 Horizon 能正常访问 static 文件。
四、适用场景
| 场景 | 是否适用 |
|---|---|
| 宿主机是 BC-Linux for Euler 21.10/22.10 | ✅ |
| 宿主机是 openEuler 20.03/22.03 LTS | ✅ |
| 容器镜像是 CentOS Stream 10 | ✅ |
| 有外网,需要在线下载补齐 | ✅ |
| 无外网,需要完全离线部署 | ✅ |
| 5 节点(控制/网络/2计算/存储) | ✅ |
| 需要 Cinder LVM 后端 | ✅ |
五、前置准备
5.1 虚拟机配置
| 节点 | CPU | 内存 | 系统盘 | 附加盘 | 网卡 |
|---|---|---|---|---|---|
| 控制节点 | 4C | 8G | ≥50G | 无 | 2块 |
| 网络节点 | 2C | 4G | ≥30G | 无 | 2块 |
| 计算节点1 | 4C | 8G | ≥30G | 1块≥10G | 2块 |
| 计算节点2 | 4C | 8G | ≥30G | 1块≥10G | 2块 |
| 存储节点 | 2C | 4G | ≥30G | 2块≥10G | 2块 |
附加盘会被 Cinder LVM 自动使用,盘上数据会被清除。
5.2 离线包准备
| 包名 | 大小 | 是否必须手动准备 | 说明 |
|---|---|---|---|
kolla-37-tmp.tar.gz |
~13GB | 必须 |
37 个 OpenStack Flamingo Docker 镜像,没有就部署不了。在线拉不动。需要的话单独找我吧,太大了上传不了,或者可以考虑使用 然后,需要注意的是,我又看了下我之前kolla-build构建的openstack组件镜像,因为下载了kolla 21.1.0,然后又是基于CS10的容器系统,貌似应该是基于Flamingo (2025.2)版本的容器镜像,太新了,根本不可能运行在BC-Linux21.10系统版本上,但是阴差阳错缺部署成功了,就当学习了,也许是因为OpenStack 核心服务(Keystone、Glance、Nova 等)从 Yoga 到 Flamingo 的基础启动逻辑、数据库连接、AMQP 通信机制没有发生根本性断裂。因为用的Yoga 模板,Flamingo 的代码拿到 Yoga 模板生成的配置文件,大部分选项还能认得,只是有些废弃了、有些新增了。但是这个跨度有点大,跨了大概7个版本迭代。Yoga (Y) → Zed (Z) → Antelope (A) → Bobcat (B) → Caracal (C) → Dalmatian (D) → Epoxy (E) → Flamingo (F),就很神奇,后面有空我再重新用kolla 14.x去构建一套yoga版本镜像再更新吧。 |
kolla-ansible-yoga.tar.gz |
~5MB | 推荐 | kolla-ansible 源码,无网时必须提前准备 |
openstack-kolla-1.0.0.tar.gz |
~20KB | 推荐 | ansible-collection-kolla,无网时必须提前准备 |
container-rpms/ |
~50MB | 推荐 | openssh-server、cronie、crontabs 等,用于重建 keystone-ssh/fernet/horizon-fixed 镜像,无网时必须提前准备 |
registry-2.tar |
~20MB | 推荐 | Docker Registry 镜像,脚本自动 docker pull,无网时必须提前准备 |
| RPM/wheel | ~500MB | 推荐 | 宿主机依赖,有网时自动下载,无网时必须提前准备 |
| OpenStack 版本 | kolla 版本 | 官方来源 |
|---|---|---|
| Yoga | 14.x(14.0.0 ~ 14.12.0) | https://releases.openstack.org/teams/kolla.html |
| Zed | 15.x | |
| Bobcat (2023.2) | 17.x | |
| Caracal (2024.1) | 18.x | |
| Dalmatian (2024.2) | 19.x | |
| Epoxy (2025.1) | 20.x | |
| Flamingo (2025.2) | 21.x(21.0.0, 21.1.0, 21.2.0) |
说明:
-
只有
kolla-37-tmp.tar.gz是真正必须提前准备的 -
上传到
/root/、/opt/offline/或/data/offline/任一目录即可,脚本自动搜索
六、使用方法
6.1 有网环境
# 上传离线包后执行
bash OpenStack-install-v1.0.sh
# 按提示输入 5 个节点管理网 IP
# 业务网 IP 自动推导(管理网网段+100),支持手动覆盖
# 等待 40-120 分钟完成
6.2 无网环境
# 直接执行,脚本自动检测无外网 + 离线源完整 → 自动跳过阶段一
bash OpenStack-install-v1.0.sh
6.3 强制跳过阶段一
bash OpenStack-install-v1.0.sh --skip-phase1
七、部署完成后
# 查看管理员密码
cat /etc/kolla/passwords.yml | grep keystone_admin_password
# 登录 Horizon
# URL: http://<VIP>/
# 账号: admin
# 密码: 上面查到的密码
# 验证核心服务
source /etc/kolla/admin-openrc.sh
openstack service list
openstack compute service list
openstack network agent list
openstack volume service list
openstack image list
八、注意事项
-
宿主机和容器发行版不匹配:37个容器镜像是我自己在云主机香港节点现做的,有可能是非官方支持组合,只是脚本通过兼容性修复使其运行。可以通过这个脚本学习一下到底有哪些坑。可以自行研究基于 Rocky 9 或 openEuler 官方构建镜像,估计就没那么多问题需要修复了。
-
业务网网卡不要配 IP:由 Neutron
br-ex网桥接管,手动配 IP 会导致冲突。 -
附加盘数据会被清除:Cinder LVM 会自动创建卷组。
九、版本信息
-
版本:v1.0
-
适用系统:BC-Linux for Euler 21.10/22.10、openEuler 20.03/22.03 LTS
-
OpenStack 版本:Flamingo (2025.2)
-
容器镜像:CentOS Stream 10(通过兼容性修复运行)
-
内核要求:≥4.19
十、下载链接:https://download.csdn.net/download/fxqice/93260850
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)