esxi 7是不支持直接对已有虚拟机进行克隆的,这对于需要批量克隆大量虚拟机场景并不友好
经过摸索,可以直接克隆已有虚拟机目录,修改其中的vmx文件实现克隆,可以把这个过程写成shell脚本,实现批量克隆
1.开启ssh

2.搜索出模板机所在目录
此时已经部署了模板机,名为template
[root@192:~] find / -name template
/etc/pam.d/template
/usr/lib/vmware/hostd/docroot/ui/views/vms/template
/vmfs/volumes/68396464-38a97e3a-512e-ecf4bbce2ab8/template
[root@192:~] 然后就切到父目录下面去
cd /vmfs/volumes/68396464-38a97e3a-512e-ecf4bbce2ab8/创建虚拟机目录并复制vmx文件
[root@192:/vmfs/volumes/68396464-38a97e3a-512e-ecf4bbce2ab8] mkdir -p k8s-master-1
[root@192:/vmfs/volumes/68396464-38a97e3a-512e-ecf4bbce2ab8] cp template/template.vmx k8s-master-1/k8s-master-1.vmx克隆vmdk文件
vmdk文件的克隆不能简单的用cp
[root@192:/vmfs/volumes/68396464-38a97e3a-512e-ecf4bbce2ab8] vmkfstools -i template/template.vmdk k8s-master-1/k8s-master-1.vmdk
Destination disk format: VMFS zeroedthick
Cloning disk 'template/template.vmdk'...
Clone: 100% done.将新的vmx文件中原名换为新的
sed -i 's@template@k8s-master-1@g' k8s-master-1/k8s-master-1.vmx在ESXI中导入虚拟机
创建虚拟机,选择“注册现有虚拟机”

在文件夹中选择新的vmx

参考以上过程,归纳出一个shell脚本。注意ESXI系统默认情况下是不支持/bin/bash的,这里使用的是/bin/sh
cat > clone_virtual_machine.sh << 'EOF'
#!/bin/sh
####################################
# 保存虚拟机文件的父目录
virtual_ma_dir='/vmfs/volumes/68396464-38a97e3a-512e-ecf4bbce2ab8/'
# 模板机的目录名字
template_ma_dir='template'
# 新生成虚拟机的名字
new_ma_dir="slave1 slave2"
####################################
cd ${virtual_ma_dir}
for slave in $new_ma_dir; do
mkdir -p ${slave}
cp ${template_ma_dir}/${template_ma_dir}.vmx ${slave}/${slave}.vmx
vmkfstools -i ${template_ma_dir}/${template_ma_dir}.vmdk ${slave}/${slave}.vmdk
sed -i "s@${template_ma_dir}@${slave}@g" ${slave}/${slave}.vmx
done
EOF补充:ubuntu22.04有重启后IP重置的问题,可以进行以下配置来解决
```
# 根据/etc/netplan/*.yaml中注释信息这样禁用
echo 'network: {config: disabled}' > /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
```