根据修改模板虚拟机的xml文件创建新的虚拟机
#!/bin/bash
#创建单个虚拟机(需要电脑中存在模板虚拟机)
single_initialize_define(){
while true
do
read -p "请输入新虚拟机名称:" newname
if [ $newname ];then
break
else
echo "************"
echo "请输入姓名!"
echo "************"
fi
done
while true
do
current_free_mem=`free -h|awk '/^Mem/{print $4}'|sed -r 's/(.*).$/\1/'`
mem_total=`free -h|awk '/^Mem/{print $2}'|sed -r 's/(.*).$/\1/'`
echo "目前本机内存总大小:${mem_total} G"
echo "当前空闲内存大小为:${current_free_mem} MB"
read -p "请输入新虚拟机内存大小(单位G):" newmemary
if [ $newmemary ];then
if [[ $newmemary < $mem_total ]];then
break
else
echo "**********************************"
echo "输入的数值必须小于当前内存总大小!"
echo "**********************************"
fi
else
echo "********************"
echo "请输入新虚拟机内存!"
echo "********************"
fi
done
while true
do
core=`cat /proc/cpuinfo| grep "processor"| wc -l`
echo "可用core个数:${core}"
read -p "请输入新虚拟机处理器核数:" newcpu
if [ $newcpu ];then
if [ $newcpu -le $core ];then
break
else
echo "******************************"
echo "不能超过可用个数或者输入错误!"
echo "******************************"
fi
else
echo "**************"
echo "输入不能为空!"
echo "**************"
fi
done
uuid=`uuidgen`
src_path=/mnt/lv2/centos7.0.qcow2
src_xml=/etc/libvirt/qemu/centos7.0.xml
new_path=/mnt/lv1/${newname}.qcow2
new_path_sed="\/mnt\/lv1\/${newname}.qcow2"
new_xml=/etc/libvirt/qemu/${newname}.xml
}
#镜像、xml复制
copy_img(){
cp $src_path $new_path
cp $src_xml $new_xml
}
#修改xml文件
modification_xml(){
sed -ri "s/(<name>).*(<\/name>)/\1${newname}\2/" $new_xml
sed -ri "s/(<uuid>).*(<\/uuid>)/\1${uuid}\2/" $new_xml
mem_kb=$(($newmemary*1024*1024))
sed -ri "s/(<memory.*>).*(<\/memory>)/\1${mem_kb}\2/" $new_xml
sed -ri "s/(<currentMemory.*>).*(<\/currentMemory>)/\1${mem_kb}\2/" $new_xml
sed -ri "s/(<vcpu.*>).*(<\/vcpu>)/\1${newcpu}\2/" $new_xml
sed -ri "s/(<source file=').*('\/>)/\1${new_path_sed}\2/" $new_xml
mac_addr=`openssl rand -hex 3 | sed -r 's/..\B/&:/g'`
sed -ri "s/(<mac address='..:..:..:).*('\/>)/\1${mac_addr}\2/" $new_xml
}
#运行
single_initialize_define
copy_img
modification_xml
virsh define $new_xml
#------------------------------------------------------------------------------------