使用devstack部署openstack

使用 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 用户

✅ 成功标志:最后输出类似:

csharp 复制代码
Horizon 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
  • 用户名:admindemo
  • 密码: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

  • 检查防火墙:

    bash 复制代码
    sudo 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 已设置


🧪 学习建议:动手实验

  1. 创建网络上传镜像启动虚拟机分配浮动 IPSSH 登录
  2. 使用 openstack CLI 替代 Dashboard 操作
  3. 查看各服务日志:/opt/stack/logs/
  4. 修改 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 控制台访问虚拟机 的方法?

欢迎继续提问!😊

相关推荐
忧思幽释5 小时前
Mariadb Galera集群在Openstack中的应用
wpf·openstack·mariadb
阿干tkl5 小时前
本地源方式安装开源 OpenStack (V版本)
开源·openstack
孪生质数-1 天前
Ansible基础入门
服务器·自动化·ansible·openstack
阿干tkl6 天前
CentOS Stream 8 通过 Packstack 安装开源OpenStack(V版本)
openstack
28的博客7 天前
CentOS 7 通过 Packstack 安装 OpenStack Train 完整步骤
云计算·openstack·平台即服务
降临-max11 天前
OpenStack创建实例一直处于创建且未分配IP问题解决
笔记·学习·openstack
求知若渴,虚心若愚。14 天前
手搓 OpenStack 部署 实战
运维·openstack
刘某的Cloud16 天前
openvswitch-ovs-流表
linux·运维·openstack·系统·neutron·openvswitch
-dcr18 天前
35.openstack管理及实验
openstack