ESXi7虚拟机克隆脚本实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 #!/bin/sh datastore_path=/vmfs/volumes/datastore1 template_name=CentOS-Base-250609 nts_template_path="$datastore_path/$template_name" new_path=$datastore_path/$1 if [ -d "$new_path" ]; then echo "exists vm : $1" exit 1 fi mkdir $new_path echo "clone vmdk..." vmkfstools -i $nts_template_path/$template_name.vmdk $new_path/$1.vmdk -d eagerzeroedthick echo "clone vmdk2..." vmkfstools -i $nts_template_path/${template_name}_1.vmdk $new_path/$1_1.vmdk -d zeroedthick echo "generate vmx..." cp $nts_template_path/$template_name.vmx $new_path/$1.vmx sed -i '/ethernet[0-9]\.generatedAddress/d' $new_path/$1.vmx sed -i '/annotation = "/d' $new_path/$1.vmx sed -i '/scsi[0-9]\.sasWWID = "/d' $new_path/$1.vmx sed -i '/sched\.swap\.derivedName = "/d' $new_path/$1.vmx sed -i '/migrate\.hostlog = "/d' $new_path/$1.vmx sed -i '/nvram = "/d' $new_path/$1.vmx sed -i '/vc\.uuid = "/d' $new_path/$1.vmx sed -i '/uuid\.location = "/d' $new_path/$1.vmx sed -i '/uuid\.bios = "/d' $new_path/$1.vmx sed -i "/displayName = \"/c\displayName = \"$1\"" $new_path/$1.vmx # custom disk file and ethernet sed -i "/scsi0:0\.fileName = \"/c\scsi0:0.fileName = \"$1.vmdk\"" $new_path/$1.vmx sed -i "/scsi0:1\.fileName = \"/c\scsi0:1.fileName = \"$1_1.vmdk\"" $new_path/$1.vmx if [ -n "$2" ]; then sed -i '/ethernet0\.addressType = "/c\ethernet0.addressType = "static"' $new_path/$1.vmx sed -i "/ethernet0\.address = \"/c\ethernet0.address = \"$2\"" $new_path/$1.vmx else sed -i '/ethernet0\.addressType = "/c\ethernet0.addressType = "generated"' $new_path/$1.vmx sed -i "/ethernet0\.address = \"/d" $new_path/$1.vmx fi echo "register vm..." vim-cmd solo/registervm $new_path/$1.vmx echo "over."