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

扫描二维码关注公众号,回复: 2919301 查看本文章

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"

#完成·····

猜你喜欢

转载自blog.csdn.net/cainiao_lj/article/details/81067409