1. 程式人生 > >Centos7 KVM快速克隆虛擬機器指令碼

Centos7 KVM快速克隆虛擬機器指令碼

前提需要手動安裝一臺虛擬機器作為模板,安裝完成後刪除網絡卡的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"

#完成·····