只写了少部分功能,需提前准备centos7.0-2.xml.bak和centos7.0-2.qcow2文件,用手动装一个虚拟机就会生成这两个文件做模板,其他功能自己看着加吧。
#!/usr/bin/env bash
conf=/etc/libvirt/qemu
img=/var/lib/libvirt/images
user_defined() {
while :
do
read -p "请输入虚拟机名称: " name
cp $conf/centos7.0-2.xml.bak $conf/"$name".xml
qemu-img create -f qcow2 -b $img/centos7.0-2.qcow2 $img/"$name".qcow2 >/dev/null
sed -ri "/<name>/c<name>$name</name>" $conf/"$name".xml
read -p "是否修改默认CPU个数(yes/no): " cho
if [[ $cho == "yes" ]];then
read -p "请输入CPU个数: " num
sed -ri "/<vcpu placement/c<vcpu placement='static'>$num</vcpu>" $conf/"$name".xml
fi
read -p "是否修改默认内存(yes/no): " cho1
if [[ $cho1 == "yes" ]];then
read -p "请输入内存值(kb): " mem
sed -ri "/<memory unit='KiB/c<memory unit='KiB'>$mem</memory>" $conf/"$name".xml
fi
sed -ri "/<uuid>/c<uuid>`uuidgen`</uuid>" $conf/"$name".xml
sed -ri "/<source file/c<source file='$img/"$name".qcow2'/>" $conf/"$name".xml
mac=`openssl rand -hex 3 | sed -r 's/..\B/&:/g'`
sed -ri "/<mac address/c<mac address='52:54:00:$mac'/>" $conf/"$name".xml
virsh define $conf/"$name".xml
read -p "是否继续创建(yes/no): " cho2
if [[ $cho2 == "no" ]];then
break
fi
done
}
default() {
for i in {1..5}
do
cp $conf/centos7.0-2.xml.bak $conf/vm"$i".xml
qemu-img create -f qcow2 -b $img/centos7.0-2.qcow2 $img/vm"$i".qcow2 >/dev/null
sed -ri "/<name>/c<name>vm$i</name>" $conf/vm"$i".xml
sed -ri "/<uuid>/c<uuid>`uuidgen`</uuid>" $conf/vm"$i".xml
sed -ri "/<source file/c<source file='$img/vm"$i".qcow2'/>" $conf/vm"$i".xml
mac=`openssl rand -hex 3 | sed -r 's/..\B/&:/g'`
sed -ri "/<mac address/c<mac address='52:54:00:$mac'/>" $conf/vm"$i".xml
virsh define $conf/vm"$i".xml
done
}
del_virt() {
run_vm=$(virsh list --all |awk '/[0-9]/{print $2}')
sleep_vm=`virsh list --all|grep ' -'|awk '{print $2}'`
for i in $run_vm
do
virsh destroy $i &>/dev/null
virsh undefine $i &>/dev/null
rm -rf $conf/"$i".xml
rm -rf $img/"$i"*
done
for i in $sleep_vm
do
virsh undefine $i &>/dev/null
rm -rf $conf/"$i".xml
rm -rf $img/"$i"*
done
}
cat <<-EOF
----------------------------------------
1.创建自定义配置单个虚拟机
2.批量创建默认配置虚拟机
3.删除虚拟机
q.exit
----------------------------------------
EOF
while :
do
read -p "please input your choice: " choice
case $choice in
1)
user_defined
;;
2)
default
;;
3)
del_virt
;;
q)
exit
;;
*)
echo "error! please input right num"
esac
done