前提需要手动安装一台虚拟机作为模板,安装完成后删除网卡的udev文件以及网卡配置文件中的uuid、mac地址:
/home/virt_image/.templetion.qcow2 作为虚拟机磁盘镜像文件模板
/etc/libvirt/qemu/.templetion.xml 作为虚拟机描述性文件模板
-------------------------------------------------------------------------------------------------
#!/bin/bash
IMG_DIR=/home/virt_image
BASEVM=templetion
TEMP=/tmp/myvm.xml
#读取用户输入的一个数字作为虚拟机的编号
read -p "Input a number for virtual mechine:" VMNUM
#判断用户的输入是否为数字并在允许范围中
if [ -z "$VMNUM" ];then
echo "You must input a number"
exit
elif [[ "$VMNUM" =~ ^[1-9]+$ ]];then
if [ ${VMNUM} -lt 1 -o ${VMNUM} -gt 99 ];then
echo "Input out of range"
exit
elif [ ${VMNUM} -le 9 ];then
VMNUM=0$VMNUM
fi
else
echo "Your input must be a number"
exit
fi
#确定是否有和当前虚拟机冲突
NEWVM=node$VMNUM
if [ -e $IMG_DIR/${NEWVM}.qcow2 ];then
echo 'File exists'
exit
fi
#克隆虚拟机镜像文件
echo -en "Creating Vitrual Machine disk image......\t"
qemu-img create -f qcow2 -b $IMG_DIR/.${BASEVM}.qcow2 $IMG_DIR/${NEWVM}.qcow2 &> /dev/null
echo -e "\e[32;1m[OK]\e[0m"
#生成描述性文件并修改MAC地址和uuid
cat /etc/libvirt/qemu/.${BASEVM}.xml > $TEMP
sed -i "s/$BASEVM/$NEWVM/g" $TEMP
sed -i "/uuid/s/<uuid>.*<\/uuid>/<uuid>$(uuidgen)<\/uuid>/" $TEMP
sed -i "/mac/s/p1/$VMNUM/" $TEMP #这里mac地址替换的是模板文件中的特征值,根据需要自己修改
sed -i "/mac/s/p2/$VMNUM/" $TEMP
#定义虚拟机
echo -en "Defining new virtual machine......\t\t"
virsh define $TEMP &> /dev/null
rm -rf $TEMP
echo -e "\e[32;1m[OK]\e[0m"
#完成·····