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