Appearance
vSphere OVF 模板批量部署实战:从内容库到生产虚拟机

基于已上传的 Ubuntu 22.04 OVF 模板,快速批量部署 K8s 节点,仅需修改 IP 即可投入使用
在上一篇文章中,我们详细介绍了如何将虚拟机克隆为 OVF 模板并上传到 R2 对象存储。今天,我们将实操演示如何从内容库部署虚拟机,实现 6-12 分钟快速交付一台配置完好的 Ubuntu 服务器。
本文将从 内容库导入 OVF → 部署虚拟机 → 修改 IP 地址 → 验证 SSH 登录 全流程演示,最终在 kubernetes 资源池中成功创建 k8s-infra-221 节点。
一、将 OVF 模板导入内容库
首先,将下载的 OVF 模板文件导入到 vSphere 内容库中,以便后续批量部署。
1. 进入内容库导入界面
在 vSphere Client 中,进入内容库 template,点击 “操作” → “导入项目”:

2. 选择本地 OVF 文件
在弹出的“导入库项目”窗口中:
选择源:点击 “本地文件” → “上传文件”
选中本地的 .ovf、.vmdk 和 .nvram 文件 
3. 确认导入文件列表
上传完成后,系统会显示待导入的 3 个文件:
| 文件名 | 说明 |
|---|---|
ubuntu22.04-server-basic-template.ovf | VM 硬件配置描述文件 |
ubuntu22.04-server-basic-template-1.vmdk | 虚拟磁盘文件(2.36 GB) |
ubuntu22.04-server-basic-template-2.nvram | UEFI 固件设置 |
项目名称自动识别为 ubuntu22.04-server-basic-template,目标库为 template:

4. 监控导入任务
点击“导入”后,vCenter 会在后台执行文件上传和项目创建任务。在任务控制台中可以看到:
| 任务名称 | 状态 | 说明 |
|---|---|---|
| 将文件上载到库项目 | 已完成 | OVF 文件上传到内容库存储 |
| 创建库项目 | 已完成 | 在内容库中创建模板项目 |
整个导入过程约 2-3 分钟(取决于网络带宽):

5. 验证导入结果
导入完成后,进入内容库 template 的 “OVF 和 OVA 模板” 选项卡,可以看到新导入的模板:
- 名称:
ubuntu22.04-server-basic-template - 类型:OVF 模板
- 大小:5.53 GB(精简置备格式)
- 客户机操作系统:Ubuntu Linux (64-bit)

二、基于内容库创建虚拟机
模板导入成功后,即可从内容库部署虚拟机。本次演示将在 kubernetes 资源池中创建 k8s-infra-221。
1. 进入部署入口
在 “主机和集群” 视图中,右键点击目标资源池(这里是 kubernetes),选择 “部署 OVF 模板”:

2. 选择创建类型
选择 “从模板部署”,然后点击“下一页”:

3. 选择模板
在模板列表中,选择我们刚导入的 ubuntu22.04-server-basic-template(位于库 template 中):

4. 设置名称和位置
指定虚拟机名称和文件夹位置:
- 虚拟机名称:
k8s-infra-221(按集群命名规范) - 位置:选择
Datacenter根目录

5. 选择计算资源
选择目标资源池或主机。本次选择 kubernetes 资源池,兼容性检查通过:

6. 查看详细信息
这一步会显示 OVF 软件包的高级配置信息:
| 配置项 | 值 |
|---|---|
| 发布者 | 证书不存在(内部模板,无签名) |
| 描述 | Installation is based on the Ubuntu Server method. |
| 磁盘大小 | 60.0 GB(厚置备延迟置零) |
点击“下一页”接受高级配置选项:

注意:如果出现“发布者证书不存在”的提示,因为是内部自建模板,直接忽略即可。
7. 关键配置:disk.EnableUUID = TRUE
在 OVF 部署向导的 “查看详细信息” 步骤中,有一个容易被忽视但极其重要的高级参数 —— disk.EnableUUID = TRUE。
这个参数是做什么的?
| 维度 | 说明 |
|---|---|
| 作用 | 让虚拟机中的操作系统能够直接访问物理磁盘的 UUID,而非虚拟化层生成的虚拟标识符 |
| 默认值 | FALSE(vSphere 默认不启用) |
| 影响范围 | 磁盘识别、持久化存储、集群故障切换 |
为什么一定要设置为 TRUE?
在以下场景中,必须启用 disk.EnableUUID = TRUE,否则会导致严重问题:
| 场景 | 不启用的后果 |
|---|---|
| K8s 集群 + vSphere CSI | 持久卷(PV)无法正确挂载,Pod 无法使用 vSphere 存储类 |
| 物理到虚拟(P2V)迁移 | 迁移后的系统可能无法正确识别磁盘,导致引导失败 |
| 跨主机 vMotion | 磁盘标识不一致,可能导致数据访问异常 |
| 依赖磁盘 UUID 的应用 | 如 Oracle ASM、某些数据库集群,会因 UUID 变化而报错 |
本次模板的配置
在本次部署中,disk.EnableUUID = TRUE 已作为高级配置项包含在 OVF 模板中,部署时会自动应用:
conf
disk.EnableUUID = TRUE你可以在 OVF 部署向导的 “查看详细信息” 页面中,滚动查看高级配置列表,确认该参数已包含在内:

验证方法:虚拟机部署完成后,SSH 登录到系统,执行
ls -l /dev/disk/by-id/,如果能看到类似scsi-36000c29...的磁盘标识,则说明 UUID 功能已生效。
最佳实践建议
| 建议 | 说明 |
|---|---|
| 模板制作时预先配置 | 在制作 OVF 模板前,在源虚拟机的“高级参数”中添加 disk.EnableUUID = TRUE,后续所有基于该模板部署的 VM 都会自动继承 |
| 已部署的 VM 手动添加 | 编辑虚拟机设置 → 虚拟机选项 → 高级 → 配置参数 → 添加参数 disk.EnableUUID = TRUE,需要重启 VM 生效 |
8. 选择存储
选择虚拟磁盘的存储位置和格式:
| 配置项 | 本次选择 |
|---|---|
| 数据存储 | NVMe_2TB_Storage(高性能存储) |
| 虚拟磁盘格式 | 厚置备延迟置零(生产环境推荐) |

关于磁盘格式选择:
- 厚置备延迟置零:预分配全部空间,性能最佳,适合生产环境
- 精简置备:按需分配,节省存储空间,适合 Homelab
9. 选择网络
配置网络映射,源网络 VM Network 映射到目标网络 VM Network:
- IP 分配:静态 - 手动(后续在 VM 内部配置)
- IP 协议:IPv4

10. 确认配置并完成
最后一步,检查所有配置项,确认无误后点击 “完成”:
| 配置项 | 值 |
|---|---|
| 名称 | k8s-infra-221 |
| 模板 | ubuntu22.04-server-basic-template |
| 计算资源 | kubernetes |
| 存储 | NVMe_2TB_Storage(厚置备延迟置零) |
| 网络 | VM Network |

11. 监控部署任务
点击“完成”后,vCenter 会在后台执行部署任务。在任务控制台中可以看到:
| 任务名称 | 状态 | 说明 |
|---|---|---|
| 将 OVF 软件包从内容库部署到资源池 | 已完成 | 主部署任务 |
| 部署 OVF 模板 | 已完成 | OVF 实例化 |
| 传输文件 | 已完成 | 磁盘文件传输到目标存储 |
整个部署过程约 2-3 分钟:

三、验证部署结果
部署完成后,在资源池中可以看到新创建的虚拟机 k8s-infra-221,状态为 “已关闭电源”:

1. 启动虚拟机
右键点击 k8s-infra-221 → “电源” → “打开电源” 或点击 “打开电源” 按钮。启动后,状态变为 “已打开电源”:

2. 登录控制台确认
在虚拟机详情页面,点击 “启动 WEB 控制台”

使用默认凭据 root/fishfinal 登录到系统

登录后可以看到:
- 系统版本:Ubuntu 22.04.5 LTS
- 内核版本:5.15.0-187-generic
- IPv4 地址:192.168.0.220(模板默认 IP)
3. 验证预配置
执行 ifconfig 确认网络配置:

四、修改静态 IP 地址
模板默认 IP 为 192.168.0.220,如果要在同一网络中部署多台虚拟机,必须修改 IP 以避免冲突。
1. 编辑 netplan 配置文件
bash
vim /etc/netplan/00-installer-config.yaml将 addresses 中的 IP 从 192.168.0.220/24 修改为 192.168.0.221/24:

2. 应用网络配置
bash
netplan apply
3. 验证新 IP
执行 ifconfig 确认 IP 已变更为 192.168.0.221:

五、验证 SSH 远程登录
从本地机器 SSH 连接到新虚拟机,验证远程访问是否正常:
bash
ssh [email protected]输入密码 fishfinal,成功登录:

至此,从 OVF 模板批量部署 Ubuntu 22.04 虚拟机的完整流程已全部验证通过!🎉
六、批量部署的优势总结
| 对比维度 | 全新安装 | OVF 模板部署 |
|---|---|---|
| 耗时 | 50-70 分钟 | 6-12 分钟 |
| 人工干预 | 大量手动配置 | 仅需修改 IP |
| 一致性 | 容易产生环境差异 | 100% 一致 |
| 批量能力 | 逐台安装 | 并行批量部署 |
| 预配置 | 无 | root/SSH/软件包/别名全预装 |
七、下一步建议
| 序号 | 建议操作 | 说明 |
|---|---|---|
| 1 | 修改默认密码 | passwd root 更改默认密码 |
| 2 | 创建普通用户 | 生产环境建议使用非 root 用户操作 |
| 3 | 配置 SSH 密钥 | 禁用密码登录,改用密钥认证提高安全性 |
| 4 | 创建快照 | 部署完成后创建快照,作为新基线 |
| 5 | 加入 K8s 集群 | 根据集群需求执行 kubeadm join |
结语
通过本文的实操演示,你已经掌握了 从内容库 OVF 模板快速部署虚拟机 的完整流程:
- ✅ 将 OVF 模板导入内容库
- ✅ 从内容库部署虚拟机
- ✅ 启动并验证预配置
- ✅ 修改静态 IP 地址
- ✅ SSH 远程登录验证
这套流程让 批量部署 Ubuntu 22.04 节点变得像复制粘贴一样简单,无论是 K8s 集群扩容、开发环境搭建,还是 Homelab 快速重建,都能在 10 分钟内完成交付。
相关阅读推荐:
