一、为什么要折腾这件事
我是教计算机专业课的,讲云计算和云安全。一直想给学生搭一套真正能跑起来的 OpenStack 实验环境——不是看 PPT,而是能在 Horizon 上点几下、看到网络拓扑、能讲清楚 Keystone 认证流程的那种。
这个环境主要服务两门课:
- 云计算技术:Keystone 多租户认证、Glance 镜像管理、Nova 实例生命周期、Neutron SDN 网络拓扑,光靠模拟器和远程实验室不够直观;
- 云安全:安全组规则、租户隔离、浮动 IP、镜像加固,没有一套自己能掌控的环境,根本演示不了。
手里这台笔记本配置很一般:
| 项目 | 配置 |
|---|---|
| CPU | Intel i5-10210U(4 核 8 线程,轻薄本) |
| 内存 | 16 GB |
| 系统 | Windows 10 家庭中文版 22H2 |
| 常驻 | Docker Desktop(WSL2 后端) |
目标很明确:本地搭一套 all-in-one OpenStack,资源占用尽量小,能从 Windows 浏览器访问 Horizon,最好还能创建真实实例。
这篇文章把从 Docker 一路试到 VMware、再到 VirtualBox 的完整过程写下来,包括每一个报错的真实原因和最终解法。照着做,你不用再踩我踩过的坑。
二、适合谁 / 不适合谁
适合你,如果你:
- 高校老师/学生,要做「云计算技术」「云计算基础」课程实验;
- 讲「云安全」,需要一套能演示安全组、租户隔离、浮动 IP 的环境;
- 想在本地练手 OpenStack,但没有服务器;
- 照着网上教程装到一半卡住,想找一份「踩过坑的完整版」。
不适合你,如果你:
- 想跑生产环境——这是教学 all-in-one,单节点、无高可用;
- 追求高性能建实例——无 KVM 硬件加速时,QEMU 软件模拟会很慢;
- 需要 Cinder / Swift / Heat 全套——为了省内存,这些组件被裁剪掉了。
三、路线决策:哪些路走不通,为什么
3.1 Docker Desktop 直接部署?否决
第一反应:机器上已经有 Docker Desktop,能不能docker-compose up一把拉起 OpenStack?
核查后否决,三个原因:
- WSL2 里没有
/dev/kvm。Docker Desktop 跑在 WSL2 上,WSL2 又跑在 Hyper-V 上,硬件虚拟化已经被 Hyper-V 占了,Nova 做不了硬件加速,建实例只能纯软件 QEMU,慢到没法用。 - 没有 openvswitch 内核模块。Neutron 需要 OVS 或 Linux Bridge 的内核支持,WSL2 里跑不起来。
- 官方
openstack/docker仓库已归档不维护,GitHub 直连也不稳定。
结论:Docker Desktop 不适合做「能建真实虚拟机」的 OpenStack。
3.2 VMware Workstation?两次失败
- 本机装的是 VMware Workstation 9.0.1(2012 年的版本),和 Hyper-V 直接冲突,启动就报:
VMware Workstation and Hyper-V are not compatible.
- 想升级到 VMware 17,Broadcom 收购后下载要注册账号,163 / QQ 邮箱都收不到验证邮件,官方直链全部 404。
干脆卸载 VMware,转 VirtualBox。
3.3 最终方案
VirtualBox 7.2 + CentOS 7.9 Minimal + RDO PackStack Train,all-in-one,4 核 / 6GB 内存 / 30GB 磁盘,linuxbridge 网络后端。
选它的理由:
- VirtualBox 官方直链免注册,下载快;
- CentOS 7.9 + Train 是 RDO 支持最成熟、中文资料最多的组合;
- PackStack 一条命令拉起全套,不用手搓 20 个服务;
- 裁掉 Cinder/Heat/Telemetry/Swift/Manila,只留 Keystone + Glance + Nova + Neutron + Horizon,16GB 够跑。
为什么还用 CentOS 7.9 + Train(都已经 EOL 了)?
因为它是国内高校教材、课程大纲、实验指导书里最普及的一套,学生搜得到答案、老师接得上课程。教学场景优先「稳」和「资料全」,不是优先「新」。需要新版本(Ubuntu + Yoga/Zed)的话,配置不能直接套用。
四、VirtualBox 安装与虚拟机创建
4.1 安装
官网下载VirtualBox-7.2.x-Win.exe,默认装 C 盘。
📦 VirtualBox / CentOS ISO / Cirros 镜像三个安装包我都放网盘了,链接见5.1 节,懒得找直链的直接拿。
⚠️额外小问题 A:想装 D 盘会报
Invalid installation directory。原因是 VirtualBox 7.x 要求安装路径每一级目录都不能让普通用户有写/删权限,而 D 盘根目录 ACL 天生带
Authenticated Users:(M)写权限。改 D 盘根目录 ACL 风险大,最后选择程序装 C 盘,虚拟机文件放 D 盘。
装完后在全局设置里把「默认虚拟电脑位置」改到D:\VirtualBox VMs。
4.2 创建虚拟机
| 项目 | 值 |
|---|---|
| 名称 | OpenStack |
| 内存 | 6144 MB(6GB) |
| CPU | 4 核 |
| 硬盘 | 30GB VDI,动态分配 |
| 网卡 | NAT |
桥接模式在这台机器上选不了——Hyper-V 占用了虚拟化,VirtualBox 绑不上物理网卡,「确定」按钮是灰的。这一点很关键,后面坑 10 会用到。
4.3 NAT 端口转发
NAT 模式下 Windows 访问不了虚拟机,必须加端口转发:
&'C:\Program Files\Oracle\VirtualBox\VBoxManage.exe'controlvm"OpenStack"natpf1"ssh,tcp,127.0.0.1,2222,,22"&'C:\Program Files\Oracle\VirtualBox\VBoxManage.exe'controlvm"OpenStack"natpf1"horizon,tcp,127.0.0.1,8088,,80"之后:
- SSH:
plink -ssh -P 2222 root@127.0.0.1 - Horizon:
http://127.0.0.1:8088/dashboard
⚠️最容易卡住的一点:Windows 上不要用
10.0.2.15访问。虚拟机在 NAT 模式下,
10.0.2.15是虚拟机内部的地址,宿主机根本路由不到。你在 Windows 浏览器里输http://10.0.2.15只会超时。所有访问都必须走端口转发,落到
127.0.0.1:
要访问什么 Windows 上输什么 Horizon 控制台 http://127.0.0.1:8088/dashboardSSH ssh -p 2222 root@127.0.0.1虚拟机内部的 10.0.2.15只在虚拟机里有效,宿主机用不了 本文示例的 root 密码是
123,登录 Horizon 用admin/admin。
⚠️额外小问题 B:8080 端口可能被占用(我这台被 PID 10552 占了),换成 8088 就好。
五、CentOS 7.9 安装
5.1 下载镜像
CentOS 7 已 EOL,官方源下线,用清华 vault 源:
https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.isoMinimal 版就够,图形界面没用还吃资源。
📦三样安装资源我都打包放网盘了,省得你到处找:
文件 大小 说明 VirtualBox-7.2.20-175154-Win.exe169.94MB 官网下载,未修改 CentOS-7-x86_64-Minimal-2009.iso973.00MB 清华 vault 源下载,未修改 cirros-0.6.3-x86_64-disk.img20.69MB 已校验 qcow2,可直接上传 Glance 链接:https://pan.baidu.com/s/1PEC_9PxM3wb70SKhjgHepw
提取码:k3a7全部为官方/镜像站原始文件,无解压密码、未做任何修改。百度网盘非会员下载慢,急用的话直接用上面的官方直链。
5.2 安装时的选择
- 软件选择:最小安装
- root 密码:教学环境设简单点(示例
123,别用于任何联网环境) - 网络:安装时就把以太网打开,否则装完连不上网
5.3 换国内 yum 源
装完第一件事换源。全部用阿里云 + 中科大双 baseurl,一个挂了另一个自动顶上:
# /etc/yum.repos.d/CentOS-Base.repo [base] name=CentOS-7 - Base baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/os/$basearch/ https://mirrors.ustc.edu.cn/centos-vault/7.9.2009/os/$basearch/ gpgcheck=0 enabled=1 [updates] name=CentOS-7 - Updates baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/updates/$basearch/ https://mirrors.ustc.edu.cn/centos-vault/7.9.2009/updates/$basearch/ gpgcheck=0 enabled=1 [extras] name=CentOS-7 - Extras baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/extras/$basearch/ https://mirrors.ustc.edu.cn/centos-vault/7.9.2009/extras/$basearch/ gpgcheck=0 enabled=1OpenStack Train 源:
[openstack-train] name=OpenStack Train baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/cloud/x86_64/openstack-train/ https://mirrors.ustc.edu.cn/centos-vault/7.9.2009/cloud/x86_64/openstack-train/ gpgcheck=0 enabled=1现在就加上 Virt SIG 源,否则后面 compute 阶段会报qemu-kvm-rhev找不到(见坑 7):
[virt-kvm-common] name=CentOS-7 - Virt KVM common baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/virt/x86_64/kvm-common/ https://mirrors.ustc.edu.cn/centos-vault/7.9.2009/virt/x86_64/kvm-common/ gpgcheck=0 enabled=1/etc/yum.conf加两行,防止下载瞬断:
retries=15 timeout=1205.4 关闭 SELinux
setenforce0sed-i's/^SELINUX=.*/SELINUX=permissive/'/etc/selinux/config六、PackStack 部署
6.1 装 PackStack
yum-yinstallcentos-release-openstack-train yum-yinstallopenstack-packstack6.2 生成并裁剪 answers.cfg
packstack --gen-answer-file=/root/answers.cfg然后改这几个关键参数(省资源 + 避坑):
# 管理员密码 CONFIG_KEYSTONE_ADMIN_PW=admin # 数据库和消息队列密码(固定下来,避免历次失败残留凭据) CONFIG_MYSQL_PW=mysqlroot CONFIG_RABBIT_PW=rabbitmq # 不装 demo 实例,省资源 CONFIG_PROVISION_DEMO=n # 网络后端选 linuxbridge(不要用默认 OVS,见坑 6) CONFIG_NEUTRON_L2_AGENT=linuxbridge CONFIG_NEUTRON_LB_INTERFACE_MAPPINGS=physnet1:br-ex # ML2 机制驱动 CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=linuxbridge,l2population CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vxlan,flat CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vxlan # 以下全部关掉,省资源 CONFIG_CINDER_INSTALL=n CONFIG_HEAT_INSTALL=n CONFIG_CEILOMETER_INSTALL=n CONFIG_AODH_INSTALL=n CONFIG_SWIFT_INSTALL=n CONFIG_MANILA_INSTALL=n CONFIG_TROVE_INSTALL=n CONFIG_SAHARA_INSTALL=n CONFIG_IRONIC_INSTALL=n CONFIG_MAGNUM_INSTALL=n6.3 启动部署
packstack --answer-file=/root/answers.cfg30~60 分钟,下载几百个包。下面是我实际踩过的所有坑,按出现顺序排列。
七、10 个坑(核心章节,建议收藏)
坑 1:facter 崩溃,leatherman_curl.so.1.3.0缺失
现象:puppet 阶段报 facter 运行失败,日志有leatherman_curl.so.1.3.0: cannot open shared object file。
原因:openstack-train 需要 leatherman 1.3.0,但 EPEL 装了 1.10.0,版本错配。
解法:
yum-ydowngrade leatherman ldd /usr/bin/facter# 确认没有 not found坑 2:yum 下载反复 TCP reset,995 个 puppet 资源被 skip
现象:装到一半python-netifaces、openstack-selinux等包下载失败,puppet 连锁失败。
原因:国内网络到国外源不稳定,连接被 reset。
解法:
/etc/yum.conf加retries=15、timeout=120;- 所有 repo 改阿里云 + 中科大双 baseurl;
- 关键包预先手动装好,每个包重试 5 次:
forpkginopenstack-selinux openstack-dashboard openstack-neutron-linuxbridge openstack-nova-compute;doforiin12345;doyum-yinstall"$pkg"&&breakecho"retry$pkg($i)";sleep5donedone坑 3:python2-qpid-proton版本冲突
现象:yum 事务失败,qpid-proton 版本矛盾。
原因:EPEL 里有 qpid-proton-c 0.37,但 Train 需要 0.26。
解法:epel.repo的[epel]段加排除:
exclude=qpid-proton* python2-qpid-proton*然后手动装 0.26:
yum-yinstallqpid-proton-c-0.26.0 python2-qpid-proton-0.26.0坑 4:MariaDB 凭据不一致
现象:Insufficient credentials to authenticate,Keystone 起不来。
原因:历次失败运行残留了 root 密码,和 answers.cfg 里的CONFIG_MYSQL_PW对不上。
解法:彻底重置 MariaDB:
systemctl stop mariadbrm-rf/var/lib/mysqlmkdir/var/lib/mysqlchownmysql:mysql /var/lib/mysql mysql_install_db--user=mysql systemctl start mariadb并在 answers.cfg 里固定CONFIG_MYSQL_PW=mysqlroot、CONFIG_RABBIT_PW=rabbitmq。
坑 5:neutron-server 死循环重启
现象:journalctl -u neutron-server显示:
The following mechanism drivers were not found: set(['ovn'])原因:packstack 生成的默认 answers.cfg 里CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=ovn,但我们没装 OVN。
解法:改成
CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=linuxbridge,l2population坑 6:OVS 后端 puppet 报Missing title
现象:network 阶段报:
Error: Evaluation Error: Missing title. The title expression resulted in undef (file: .../neutron/manifests/plugins/ovs/port.pp, line: 7)原因:puppet-neutron 模块在 OVS 后端的一个 bug,bridge_mappings解析后 title 变成 undef。
解法:不用 OVS,直接换 linuxbridge:
CONFIG_NEUTRON_L2_AGENT=linuxbridge CONFIG_NEUTRON_LB_INTERFACE_MAPPINGS=physnet1:br-exlinuxbridge 不经过那个有 bug 的 OVS port 资源定义,问题绕开。
坑 7:compute 阶段qemu-kvm-rhev >= 2.10.0找不到
现象:
Error: Package: openstack-nova-compute-20.6.0-1.el7.noarch (openstack-train) Requires: qemu-kvm-rhev >= 2.10.0原因:这个包不在 base/updates/cloud-train 源里,在 CentOSVirt SIG源里。
解法:加上virt-kvm-common.repo(见 5.3),然后:
yum-yinstallopenstack-nova-compute openstack-nova-migration坑 8:Horizon 从 Windows 访问 404
现象:虚拟机内curl http://10.0.2.15/dashboard返回 200,Windows 浏览器访问http://127.0.0.1:8088/dashboard返回 404。
原因:Apache 的15-horizon_vhost.conf里 ServerAlias 只有10.0.2.15、openstack.local、localhost,没有127.0.0.1。请求落到了默认 vhost。
解法:
<VirtualHost *:80> ServerName openstack.local ServerAlias 10.0.2.15 ServerAlias openstack.local ServerAlias localhost ServerAlias 127.0.0.1 # 加这一行 ... </VirtualHost>systemctl reload httpd坑 9:时间同步被跳过
现象:PackStack 最后警告Time synchronization installation was skipped。
原因:最小化安装没装 chrony,时间漂移会导致 Keystone token 校验失败。
解法:
yum-yinstallchrony systemctlenable--nowchronyd坑 10:启动实例报PortBindingFailed,br-ex 不存在
现象:openstack server create后实例变 ERROR,nova-compute 日志:
PortBindingFailed: 绑定端口 da3155ca 失败 Interface br-ex for physical network physnet1 does not exist. Agent terminated!openstack network agent list里看不到 linuxbridge-agent。
原因:linuxbridge-agent 需要br-ex网桥存在并绑定物理网卡,但 VirtualBoxNAT 模式下 PackStack 不会自动创建这个网桥。
三条处理路径,按你的机器条件选:
| 方案 | 前提 | 代价 |
|---|---|---|
| A 改桥接 | 宿主机没开 Hyper-V,桥接网卡可选 | 最干净,但虚拟机 IP 会变,answers.cfg 要同步改 |
| B 手动建 br-ex | 只能用 NAT | 会断 SSH,必须在 VirtualBox 控制台操作,先拍快照 |
| C 不建实例 | 纯教学演示 | 最稳,控制台/镜像/拓扑全都能演示,只是起不了实例 |
方案 B 的关键步骤(完整版含回滚见资源包踩坑排查表.md):
# 先备份cp/etc/sysconfig/network-scripts/ifcfg-enp0s3 /root/ifcfg-enp0s3.bak# 建桥、迁 IP(执行完 SSH 立刻断,去 VirtualBox 控制台继续)brctl addbr br-ex brctl addif br-ex enp0s3ipaddr flush dev enp0s3ipaddradd10.0.2.15/24 dev br-exiplinksetbr-ex upiprouteadddefault via10.0.2.2 systemctl restart network systemctl restart neutron-linuxbridge-agent openstack network agent list💡我的建议:如果你的课程重点是 Keystone、Glance、Neutron 拓扑、Horizon 操作,方案 C 就够了。上传镜像、建网络、建路由、看拓扑图,这些完全不需要实例。真要让学生建实例,优先考虑方案 A,或者换一台没装 Docker Desktop 的机器。
八、部署成功后的验收
看到这一行就是成了:
**** Installation completed successfully ******逐项验证:
source/root/keystonerc_admin openstackservicelist# keystone / glance / nova / neutron / placementopenstack computeservicelist# nova-compute / scheduler / conductor 全部 upopenstack hypervisor list# Type 显示 QEMU(无 /dev/kvm 时正常)/etc/nova/nova.conf里确认virt_type=qemu。
💡 Windows 上 Hyper-V 占了硬件虚拟化,VirtualBox 拿不到 VT-x,Nova 只能用 QEMU 纯软件模拟。能建、能跑,但慢,教学够用,别跑生产。
九、最终访问方式
| 入口 | 地址 | 账号 |
|---|---|---|
| Horizon Web | http://127.0.0.1:8088/dashboard | admin / admin |
| SSH | plink -ssh -P 2222 root@127.0.0.1 | root / 123(本文示例) |
| OpenStack CLI | 虚拟机内source /root/keystonerc_admin | admin / admin |
再强调一次:
10.0.2.15只在虚拟机内部有效,宿主机一律走127.0.0.1+ 转发端口。
登录后的 Dashboard 概况:
管理员视角的 hypervisor 状态(QEMU 类型,说明在软件模拟模式):
刷新后的概况页,可以看到资源占用情况:
项目视角上传镜像后的 Images 列表:
网络拓扑:外部网络(ext-net,flat)和内部网络(demo-net,vxlan)通过路由器连接:
十、上传镜像与创建第一台实例
10.1 关于 Cirros 镜像(我已经搞到了,附校验方法)
Cirros 是 OpenStack 官方最小测试镜像,约 21MB,启动快、占内存小,专门用来验证 Glance / Nova / Neutron 是否连通。
先说结论:我已经下载成功,并把它传到虚拟机、上传进 Glance,能正常出现在镜像列表里。
但我踩过一个很隐蔽的坑,值得你花 30 秒看完:
国内镜像站现在基本都下不到了。我逐个试了清华、阿里、腾讯、华为、北大、中科大的 cirros 目录,全部 404 或返回一个 SPA 页面。如果你用下载工具保存那个 404 页面,会得到一个 10–50KB 的cirros.img——看起来像镜像,其实是 HTML。我第一次就是这么中招的。
所以拿到文件后,务必先校验:
ls-lhcirros.img# 真实镜像应 > 1MB(实际约 21MB)xxd-l4cirros.img# 应输出 514649fb(qcow2 魔数 QFI\xfb)- 输出
514649fb→ 真镜像,继续; - 输出
3c 21 44 4f(即<!DO)→ HTML 错误页,删掉重下。
最终能用的版本:cirros-0.6.3-x86_64-disk.img,20.69MB,qcow2 格式,校验通过后即可上传。这个文件我也放在 5.1 节那个网盘里了,直接下,不用再到处试镜像站。
如果你实在拿不到,用占位镜像也能把流程走完:
qemu-img create-fqcow2 /root/test.img 5MGlance 上传、镜像列表、网络拓扑、Horizon 操作全部可以完整演示,只是实例起不来。资源包里的09-first-instance脚本已经内置了这层判断:文件头不是 qcow2 就自动回退到占位镜像,不会把 HTML 传上去。
10.2 上传镜像
# 先把镜像传到虚拟机(Windows 上用 pscp)# pscp -P 2222 -pw 123 cirros-0.6.3-x86_64-disk.img root@127.0.0.1:/root/cirros.imgsource/root/keystonerc_admin openstack image create"cirros-0.6.3"\--file/root/cirros.img\--disk-format qcow2\--container-format bare\--public\--min-disk1\--min-ram64上传成功后,在 Horizon「项目 → 计算 → 镜像」能看到:cirros-0.6.3,20.69MB,QCOW2,公有,状态运行中(见上面第 5 张图)。
openstack image list# 确认 status=active10.3 创建密钥对
openstack keypair create test-key>/root/test-key.pemchmod600/root/test-key.pem10.4 创建外部网络(ext-net)
对应 VirtualBox 的enp0s3网卡(10.0.2.0/24),flat 模式:
openstack network create--external\--provider-physical-network physnet1\--provider-network-type flat ext-net openstack subnet create--networkext-net\--allocation-poolstart=10.0.2.100,end=10.0.2.200\--gateway10.0.2.1\--subnet-range10.0.2.0/24 ext-subnet10.5 创建内部网络(demo-net)
vxlan 模式,租户隔离:
openstack network create demo-net openstack subnet create--networkdemo-net\--dns-nameserver114.114.114.114\--subnet-range192.168.1.0/24 demo-subnet10.6 创建路由器
openstack router create demo-router openstack routerset--external-gateway ext-net demo-router openstack routeraddsubnet demo-router demo-subnet10.7 启动实例
openstack flavor list openstack server create--flavorm1.tiny\--imagecirros-0.6.3\--key-name test-key\--networkdemo-net\my-first-vm⚠️ 这一步在 NAT 模式下会撞上坑 10(
PortBindingFailed)。按第七节的方案 A / B / C 处理。
10.8 验证命令汇总
source/root/keystonerc_admin openstack image list openstack keypair list openstack network list openstack subnet list openstack router list openstack server list openstack flavor list十一、已知限制(先说清楚,免得你踩到再骂)
- 实例创建需要额外处理:NAT 模式下
br-ex不存在,见坑 10。不做处理也能完整演示控制台、镜像、网络拓扑。
补充一个实用细节:启动失败的实例会变成ERROR,但仍然占着配额(管理员的 hypervisor 页面会显示「实例 0、内存已用 512MB」这种对不上的状态)。记得openstack server delete <名字>清掉,否则后面的实例可能因配额不足起不来。 - 没有硬件加速:宿主机开了 Hyper-V 时只能 QEMU 软件模拟,建实例慢。
- 组件是裁剪的:没有 Cinder、Swift、Heat、计量告警。要这些得自己开,内存也会上去。
- 版本已 EOL:CentOS 7.9 + Train 都是老版本,胜在资料全、和教材对得上,不适合生产。
- 明文口令:
admin/admin、root/123仅为实验,严禁联网使用。
十二、我把踩坑过程整理成了手册
文章已经够你照着做了,但有些东西重复敲很烦。我把这套环境里实际跑通的配置和脚本整理成了一个包:
| 内容 | 说明 |
|---|---|
answers.cfg | 已裁剪、已避坑的 packstack 配置 |
| 4 个 yum repo | 阿里云 + 中科大双源,含 Virt SIG |
| 5 个修复脚本 | leatherman/qpid 修复、Virt 源、linuxbridge 切换、MariaDB 重置、干净重启 |
verify.sh | 一键验收,不用自己敲一堆 openstack 命令 |
| Horizon vhost | 加了ServerAlias 127.0.0.1,解决 404 |
| 踩坑排查表 | 10 个坑的症状 → 原因 → 解法,含坑 10 的三种方案与回滚 |
| 6 张实测截图 | 可直接用于课件 |
00-开始之前.md | 版本说明、能力边界、安全声明 |
| 不含 Cirros 镜像 | 约 21MB,为控制包体积未打包,正文 10.1 有获取与校验方法 |
🔗资源包地址:https://download.csdn.net/download/ntc19235/93774999
0 积分即可下载(免费)。配置和脚本全部在我这台 i5-10210U / 16GB 笔记本上跑过,拿走直接用。
环境实在起不来、又赶着上课的,也可以私信我远程协助(另计)。
十三、写在最后
这套环境平时开着占 5~6GB,不影响写代码查资料。对教学来说,学生能亲手在 Horizon 上看网络拓扑、建项目、配安全组,比讲十遍 PPT 都管用。云计算课的实验环节、云安全课的安全组和租户隔离演示,这套都够用。
如果这篇帮你少走点弯路,欢迎点赞收藏;有问题评论区留言,我会回。
版本:v1.3 |更新:2026-10 |环境:VirtualBox 7.2 + CentOS 7.9.2009 + OpenStack Train