Linux虚拟机如何进行模板创建
小樊
36
2025-11-16 13:34:04
Linux 虚拟机模板创建全流程
一、核心概念与前置准备
模板是已预配置好的虚拟机“蓝图”,用于快速批量创建相同配置的实例。制作前必须对源虚拟机进行封装(seal) ,清除只对该实例有效的信息(如 MAC 地址、主机名、SSH 主机密钥 等),以避免克隆后出现冲突。封装可通过手工清理或使用 sys-unconfig 触发系统在下一次启动时自动完成初始化任务。基于模板创建的新虚拟机将获得不同的 MAC 地址 ,但仍沿用模板的 NIC 类型与驱动 。
二、通用封装步骤(适用于大多数发行版)
关机并快照:确保源虚拟机处于关机 状态,先做快照以便回滚。
清理网络持久化规则:删除 udev 生成的网卡绑定规则,避免克隆后网卡名或 MAC 冲突。常见路径与文件:
RHEL/CentOS 6:/etc/udev/rules.d/70-persistent-net.rules
RHEL/CentOS 7+、Ubuntu 等:/etc/udev/rules.d/-persistent- .rules
清理网卡配置中的唯一标识:
删除 ifcfg 文件中的 HWADDR= 、UUID= 等唯一项(如 /etc/sysconfig/network-scripts/ifcfg-eth0 或 ifcfg-ens*)。
清理 SSH 主机密钥,确保克隆后每台机器拥有唯一密钥:
执行:rm -f /etc/ssh/ssh_host_*
处理主机名与网络配置:
清空或模板化 /etc/hostname (或等效机制),避免克隆后主机名冲突。
按需保留或模板化 /etc/hosts ,确保 127.0.0.1 映射合理。
可选的系统级初始化标记:
创建文件 /.unconfigured 或使用 sys-unconfig 命令,使系统在下次启动时进入初始化向导(设置主机名、时区、root 密码、SSH 主机密钥等)。
关机等待模板化:完成上述清理后再次关机,准备转换为模板。
三、在不同平台创建模板
oVirt/RHEV 平台
前置:确认源虚拟机已关机 并处于 Down 状态。
操作:在管理门户选择源虚拟机 → 模板 → 创建模板 ,填写名称/描述 ,选择磁盘格式(RAW/QCOW2)与 存储域 ,可勾选公共模板 与复制权限 。创建期间虚拟机显示 Image Locked ,耗时与磁盘大小及存储性能相关。模板就绪后,可在“模板”页或“虚拟机”页基于模板创建虚拟机 。
VMware vSphere/Workstation
方式一(推荐):源虚机关机 → 在清单中右键源虚机 → 模板 → 转换为模板 。
方式二(克隆为模板):源虚机关机 → 右键源虚机 → 克隆 → 选择克隆为模板 ;按需选择完整克隆 以避免共享磁盘导致的一致性问题。
Oracle VirtualBox
思路:将配置好的虚机导出 为 appliance(OVA/OVF),作为“模板”复用。
操作:源虚机关机 → 菜单 文件 → 导出虚拟电脑 → 选择保存路径与名称(如 Ubuntu-Template.ova)→ 完成导出。部署时可直接导入该模板,或“新建”时选择使用现有虚拟硬盘 (VDI/VMDK)复用磁盘。
四、从模板部署与验证
创建新虚机:在模板页或虚机页选择模板 → 创建虚拟机 ,按需调整 CPU/内存/磁盘/网络 ,完成网络与主机名初始化。
首次启动检查:
登录后确认 hostname 唯一、/etc/hosts 正确、IP 与 MAC 无冲突。
检查 SSH 主机密钥 是否为新生成(/etc/ssh/ssh_host_* 应为新文件)。
如使用了 sys-unconfig ,按向导完成时区、root 密码、用户 等初始化。
清理与合规:
清理历史日志与临时文件(如 /var/log/ 下历史轮转、/tmp ),避免泄露模板信息。
统一合规基线(如 NTP/chrony 时间同步、系统加固、必要的监控/代理客户端预装)。