使用devstack部署openstack

作者:哈里谢顿日期:2025/11/22

使用 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
  • 用户名:admindemo
  • 密码: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 已设置

🧪 学习建议:动手实验

  1. 创建网络上传镜像启动虚拟机分配浮动 IPSSH 登录
  2. 使用 openstack CLI 替代 Dashboard 操作
  3. 查看各服务日志:/opt/stack/logs/
  4. 修改 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》 是转载文章,点击查看原文


相关推荐


【Linux驱动开发】Linux 设备驱动中的阻塞与非阻塞 I/O:机制、源码与示例
赖small强2025/11/20

Linux 设备驱动中的阻塞与非阻塞 I/O:机制、源码与示例 1. 基本概念与区别 阻塞 I/O:当资源不可用时,调用方进入睡眠(TASK_INTERRUPTIBLE/TASK_UNINTERRUPTIBLE),直到条件满足或被信号打断后返回。非阻塞 I/O:当资源不可用时,系统调用立即返回(通常 -EAGAIN),不发生睡眠,由用户态自行决定重试或走多路复用。关键差异: 进程状态:阻塞路径发生 TASK_RUNNING → TASK_* 的转换;非阻塞路径保持运行态。系统调用行为:阻塞路径等


Vue + Axios + Node.js(Express)如何实现无感刷新Token?
郭晟玮2025/11/19

在前后端分离架构中,Vue 前端配合 Axios 发起请求,Node.js(Express)搭建后端服务时,可实现 Token 无感刷新以提升用户体验。具体而言,前端 Vue 项目通过 Axios 拦截器,在每次请求前检查 Token 状态。若 Token 即将过期,先向服务端发起静默刷新请求,Express 后端验证旧 Token 后颁发新 Token。前端拦截器收到新 Token 后,将其更新到本地存储,并重新发起原请求,整个过程对用户透明,无需手动重新登录。 页面基本流程 登录成功


如何使用 Spec Kit 工具进行规范驱动开发?
磊磊落落2025/11/18

大家好,我是磊磊落落,目前我在技术上主要关注:Java、Golang、AI、架构设计、云原生和自动化测试。欢迎来我的博客(leileiluoluo.com)获取我的最近更新! 由上文「Markdown 将成为 AI 时代的通用编程语言?」可以知道,规范驱动开发可能成为 AI 时代的开发新范式。 在传统软件开发流程中,规范只是编码前的临时脚手架,开发者一旦进入编码阶段,便将规范束之高阁。而进入 AI 时代,「规范驱动开发」想彻底改变这一现状,即让规范贯穿整个软件开发生命周期、让规范变得可执行、让


FPGA工程师12实战项目-基于PCIe的高速ADC采集项目
第二层皮-合肥2025/11/17

目录 简介 项目内容 项目内容 实战内容 最后做总结 简介 最近新凯莱的高速示波器项目很火爆,于是计划做一高速示波器的实战项目,由于硬件电路设计已经安排了,在同步安排一篇关于FPGA的。(计划教学5名学员) 项目内容 本方案基于XINLINX的K7系列FPGA,ADC选用AD9226。 项目内容 FPGA段固件程序:负责采集前端ADC的信号,FPGA基本框架,数据协议 PCIe卡驱动:负责上位机测试程序与PCie采集卡的数据交互 PC段测试程序:


零信任架构下的 WebAIGC 服务安全技术升级方向
LeonGao2025/11/16

前言:我们已不再“相信”一切 在互联网江湖的旧时代,安全防线的哲学像是一座古城门: “只要进了城,全是自己人;只要在外面,全是坏人。” 这种“城内无敌”的逻辑简单粗暴,但当我们的 应用、用户和AI模型 分散到全球各地的云端节点上时,城门的概念变得像《三体》的面壁计划——看似防御,实则透明。 于是,新时代的口号变成了: 零信任(Zero Trust)——默认无信任,一切验证重启。 一、零信任理念的内核哲学 如果把计算系统比作一个社会,那么“零信任”就像是一个反乌托邦的理性国度: 公民(


[Unity Shader Base] RayMarching in Cloud Rendering
一步一个foot-print2025/11/14

基础知识: 1.SDF 有符号距离场,且通过正负可以判断在物体外部还是内部,通常外正内负 这是RayMarching的灵魂支撑,能够通过一个数学函数,输入一个空间中的点,输出这个点到物体表面的最短距离(带符号)。可以使复杂的几何形状可以通过简单的 SDF运算来组合。比如,两个球体的 SDF 可以通过 min() 操作来融合,通过 max() 来相交,通过 abs()和减法来创造出“镂空”效果。 RayMarching 区别于正常的射线求交,根据他的中文翻译名,光线步进,可以比较生动


DNS正反向解析&转发服务器&主从服务
firstacui2025/11/13

DNS正反向解析&转发服务器&主从服务 1. 正反向解析 主机角色系统IPclient客户端redhat 9.6192.168.72.7server域名解析服务器redhat 9.6192.168.72.181.1 配置服务端 1)修改主机名和IP地址 [root@localhost ~]# hostnamectl hostname server [root@server ~]# nmcli c m ens160 ipv4.addresses 192.168.72.18/24 [root@s


CV论文速递:覆盖视频理解与生成、跨模态与定位、医学与生物视觉、图像数据集等方向(11.03-11.07)
CV实验室2025/11/11

本周精选12篇CV领域前沿论文,覆盖视频理解与生成、跨模态与定位、医学与生物视觉、图像数据集与模型优化等方向。全部200多篇论文感兴趣的自取! 原文 资料 这里! 一、视频理解与生成方向 1、Cambrian-S: Towards Spatial Supersensing in Video 作者:Shusheng Yang, Jihan Yang, Pinzhi Huang, Ellis Brown, Zihao Yang, Yue Yu, Shengbang Tong,


软考 系统架构设计师之考试感悟4
蓝天居士2025/11/10

接前一篇文章:软考 系统架构设计师之考试感悟3 昨天(2025年11月8日),本人第四次参加了软考系统架构师的考试。和前三次一样,考了一天,身心俱疲。这次感觉和上一次差不多,考的次数多了,也就习惯了。仍然有诸多感悟,下边将本次参加考试的感悟写在这里,以资自己及后来者借鉴。 上一次参加考试是今年的5月24号,地点还是前两次那个地方(本次也是) —— 北京市商业学院(远大路校区),坐公交只需要30分钟、骑车只需要15分钟左右。上次考试结果是在今年的6月26号、即考试后的一个月左右的时间出的。


C++:类和对象---进阶篇
仟千意2025/11/8

1. 类的默认成员函数 默认成员函数就是我们没有显式实现,C++会自动生成的成员函数称为默认成员函数,C++11后,C++类的默认成员函数有8个(默认构造函数、默认析构函数、拷贝构造函数、赋值运算符重载、取地址运算符重载、const取地址运算符重载、移动构造函数(C++11后)、移动赋值运算符重载(C++11后)),我们此文只了解重要的前4个,后4个中前两个不常用,后两个之后再做讲解。 2. 构造函数 构造函数是特殊的成员函数,虽名为构造,但它完成的是成员变量的初始化工作,所以它可以完美的

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2025 聚合阅读