Centos7 KVM快速克隆虛擬機器指令碼
阿新 • • 發佈:2019-01-23
前提需要手動安裝一臺虛擬機器作為模板,安裝完成後刪除網絡卡的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" #完成·····