创建 vSphere 虚拟机模板
要求
Linux 和 Windows 虚拟机都需要特定工具才能供 vSphere 主机驱动使用。最关键的依赖项是 Linux 的 cloud-init 和 Windows 的 cloudbase-init。二者都用于通过配置主机名和设置 SSH 访问以及默认 Rancher 用户来配置虚拟机。如果需要其他配置,用户可以根据需要添加其他内容。此外,下面列出了其他要求以供参考。
如果你有任何特定的防火墙规则或配置,则需要在创建模板之前将其添加到虚拟机。 |
Linux 依赖项
下面列出了需要在模板上安装的包。不同的发行版对应的名称会略有不同,例如,某些发行版会默认提供。
-
curl
-
wget
-
git
-
net-tools
-
unzip
-
apparmor-parser
-
ca-certificates
-
cloud-init
-
cloud-guest-utils
-
cloud-image-utils
-
growpart
-
cloud-initramfs-growroot
-
open-iscsi
-
openssh-server
Windows 依赖项
模板上需要安装的包如下:
-
Windows 容器功能
-
Docker EE - 仅限 RKE1
RKE1 和 RKE2 对应的 Windows 模板的配置有所不同:
|
准备虚拟机
创建具有所有必需依赖项(以及任何其他必需项)的虚拟机后,你必须执行最关键的下一个步骤,即准备将虚拟机转换为模板。此准备步骤会重置关键数据(例如虚拟机主机名、IP 等)以防止这些信息被带入新虚拟机。如果你无法执行此步骤,你也可以创建一个具有相同主机名、IP 地址等的虚拟机。
请注意,Linux 和 Windows 对应的准备步骤有所不同。
Linux 准备
以下命令将在 Linux 中重置你的虚拟机:
# 清理日志。
if [ -f /var/log/audit/audit.log ]; then
cat /dev/null > /var/log/audit/audit.log
fi
if [ -f /var/log/wtmp ]; then
cat /dev/null > /var/log/wtmp
fi
if [ -f /var/log/lastlog ]; then
cat /dev/null > /var/log/lastlog
fi
# 清理 udev 规则。
if [ -f /etc/udev/rules.d/70-persistent-net.rules ]; then
rm /etc/udev/rules.d/70-persistent-net.rules
fi
# 清理 /tmp 路径。
rm -rf /tmp/*
rm -rf /var/tmp/*
# 清理 SSH 主机密钥。
rm -f /etc/ssh/ssh_host_*
# 清理 machine-id。
truncate -s 0 /etc/machine-id
rm /var/lib/dbus/machine-id
ln -s /etc/machine-id /var/lib/dbus/machine-id
# 清理 shell 历史。
unset HISTFILE
history -cw
echo > ~/.bash_history
rm -fr /root/.bash_history
# 截断主机名、主机和 resolv.conf,并将主机名设置为 localhost。
truncate -s 0 /etc/{hostname,hosts,resolv.conf}
hostnamectl set-hostname localhost
# 清理 cloud-init。
cloud-init clean -s -l
Windows 准备
Windows 有一个名为 sysprep 的实用程序,用于一般化镜像并重置上述 Linux 项目。命令如下:
sysprep.exe /generalize /shutdown /oobe