使用 DevStack 是体验 OpenStack 最简单、最官方的方式。它可以在 单台 Ubuntu 虚拟机 上一键部署一个功能完整的最小化 OpenStack 环境(包含 Horizon Dashboard、Keystone、Nova、Neutron、Glance、Cinder 等核心服务)。
下面为你提供一份 详细、安全、可操作 的 DevStack 部署指南(适用于学习和开发测试)。
✅ 前提条件
1. 一台干净的 Ubuntu 22.04 LTS 虚拟机(推荐)
- 内存:至少 8GB(4GB 可能卡顿,不推荐)
- CPU:至少 2 核
- 磁盘:至少 30GB(建议 50GB+)
- 网络:能访问互联网(用于下载包)
- 系统:全新安装,不要在生产服务器上运行!
💡 提示:可用 VMware / VirtualBox / KVM / 云服务器(如 AWS EC2、阿里云 ECS)
2. 使用普通用户(不能用 root)
🚀 部署步骤(全程约 20~60 分钟)
第一步:创建专用用户 stack
1# 创建 stack 用户(OpenStack 社区约定) 2sudo useradd -s /bin/bash -d /opt/stack -m stack 3 4# 授予免密 sudo 权限 5echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack 6 7# 切换到 stack 用户 8sudo su - stack 9
⚠️ 后续所有操作都在
stack用户下进行!
第二步:克隆 DevStack 代码
1# 安装 git(如果未安装) 2sudo apt update && sudo apt install -y git 3 4# 克隆官方 DevStack(稳定分支) 5git clone https://opendev.org/openstack/devstack 6cd devstack 7
🔔 建议使用 stable branch(如
stable/2024.1),避免 master 分支不稳定:1git checkout stable/2024.1 2
第三步:创建配置文件 local.conf
1cat > local.conf <<EOF 2[[local|localrc]] 3# 密码统一设置(方便记忆) 4ADMIN_PASSWORD=secret 5DATABASE_PASSWORD=$ADMIN_PASSWORD 6RABBIT_PASSWORD=$ADMIN_PASSWORD 7SERVICE_PASSWORD=$ADMIN_PASSWORD 8 9# 设置主机 IP(必须是本机内网 IP!) 10HOST_IP=$(hostname -I | awk '{print $1}') 11 12# 启用常用服务(默认已包含大部分) 13enable_service n-api n-crt n-cond n-sch n-novnc n-cauth 14enable_service g-api g-reg 15enable_service cinder c-sch c-api c-vol 16enable_service q-svc q-dhcp q-meta q-l3 17 18# 禁用 Tempest(测试套件,节省时间) 19disable_service tempest 20 21# 日志输出到屏幕(便于调试) 22LOGFILE=$DEST/logs/stack.sh.log 23VERBOSE=True 24LOG_COLOR=True 25 26# 使用 QEMU 而非 KVM(兼容性更好,尤其在嵌套虚拟化环境) 27LIBVIRT_TYPE=qemu 28 29# 减少资源占用(适合学习环境) 30API_WORKERS=1 31EOF 32
🔍 关键说明:
HOST_IP必须是你的 VM 内网 IP(如192.168.x.x或云服务器私有 IP)- 如果你在 云服务器(如阿里云、AWS)上部署,不要用公网 IP!
LIBVIRT_TYPE=qemu确保在不支持嵌套虚拟化的环境中也能运行实例
第四步:开始安装(耐心等待!)
1./stack.sh 2
⏳ 过程:
- 自动安装依赖(Python、数据库、消息队列等)
- 拉取 OpenStack 各组件源码
- 启动所有服务
- 初始化数据库和 Keystone 用户
✅ 成功标志:最后输出类似:
1Horizon is now available at http://192.168.18.133/dashboard 2Keystone is serving at http://192.168.18.133/identity/ 3The default users are: admin and demo 4The password: secret 5
🌐 访问 OpenStack
1. Web Dashboard(Horizon)
浏览器打开:
1http://<你的VM内网IP>/dashboard 2
- 用户名:
admin或demo - 密码:
secret
2. 命令行(CLI)
DevStack 已配置好环境变量,直接使用:
1# 切换到 admin 权限 2source ~/devstack/openrc admin admin 3 4# 查看计算节点 5openstack hypervisor list 6 7# 查看镜像 8openstack image list 9 10# 启动一个实例(cirros 是默认测试镜像) 11openstack server create --image cirros --flavor m1.tiny --network private test-vm 12
🛠️ 常见问题解决
❌ 问题1:stack.sh 卡在某一步或失败
- 原因:网络波动、依赖冲突、资源不足
- 解决:
1# 清理后重试 2./unstack.sh # 停止服务 3./clean.sh # 清理环境 4./stack.sh # 重新安装
❌ 问题2:无法访问 Dashboard
- 检查防火墙:
1sudo ufw allow 80/tcp 2sudo ufw allow 5000/tcp # Keystone
- 检查
HOST_IP是否正确(不能是127.0.0.1)
❌ 问题3:启动虚拟机失败(No valid host)
- 原因:计算资源不足或调度失败
- 解决:
1# 查看 nova-compute 日志 2tail -f /opt/stack/logs/n-cpu.log
- 确保内存 ≥8GB,且
LIBVIRT_TYPE=qemu已设置
🧪 学习建议:动手实验
- 创建网络 → 上传镜像 → 启动虚拟机 → 分配浮动 IP → SSH 登录
- 使用
openstackCLI 替代 Dashboard 操作 - 查看各服务日志:
/opt/stack/logs/ - 修改
local.conf启用 Swift(对象存储)或 Heat(编排)
🗑️ 清理环境
1# 停止所有服务 2./unstack.sh 3 4# 彻底清理(删除代码和配置) 5./clean.sh 6 7# (可选)删除 stack 用户 8sudo userdel -r stack 9
✅ 总结
| 步骤 | 命令 |
|---|---|
| 创建用户 | sudo useradd -m stack |
| 克隆代码 | git clone https://opendev.org/openstack/devstack |
| 配置 | 编写 local.conf(设置 IP 和密码) |
| 安装 | ./stack.sh |
| 访问 | http://<IP>/dashboard |
💡 DevStack 是学习 OpenStack 的黄金标准,几乎所有官方文档和教程都基于它。
需要我提供:
- 一个 自动安装脚本?
- 启用 Cinder LVM 后端 的配置?
- 通过 VNC 控制台访问虚拟机 的方法?
欢迎继续提问!😊
《使用devstack部署openstack》 是转载文章,点击查看原文。