需求说明:
在运维日常工作中,很多时候都需要在虚拟测试环境下创建对应数量的虚拟机来完成相关的应急方案演练以及测试相关的项目技术方案的可行性。如果能把创建虚拟机的过程写成shell脚本,或者与ansible等自动化部署方案相结合,则可以达到批量部署虚拟机的目的。当需要创建虚拟机的时候,则可以直接运行脚本完成虚拟机的创建,减少人工创建虚拟机繁琐的步骤!
源代码
#!/bin/bash
#创建虚拟机系统,可以创建与华为云平台相似的虚拟机
#作者:CasonHong
#日期:2019年3月29日
#定义函数createvhost
function createvhost(){
#对用户输入的虚拟机主机名进行判断,通过查找镜像盘文件是否已存在,若存在则返回用户输入的虚拟机已存在,不允许用户再次进行创建,退出程序。
if [ -e /var/lib/libvirt/images/"$vhost".img ];then
echo "抱歉,虚拟机 "$vhost".img 已经存在!"
echo "请输入新的虚拟机名称!"
return 1
#若不存在则代表用户可以创建虚拟机
else
#使用后端模板文件创建一个新的镜像盘文件
qemu-img create -b /var/lib/libvirt/images/.node_base.qcow2 -f qcow2 /var/lib/libvirt/images/"$vhost".img 30G &>/dev/null
#修改xml文件
sed -e "s,node_base,$vhost," /var/lib/libvirt/images/.node_base.xml > /etc/libvirt/qemu/"$vhost".xml
#定义xml文件,创建虚拟机
sudo virsh define /etc/libvirt/qemu/"$vhost".xml
echo "虚拟机创建成功!
#获取虚拟机登录密码
登录账户及密码请联系系统管理员:XXX XXXXXXXXX
即将为您开启虚拟机"$vhost""
#倒计时,加入这个的目的主要还是为了防止虚拟机尚未为创建完。
echo "3"
sleep 1
echo "2"
sleep 1
echo "1"
sleep 1
#开启虚拟机
sudo virsh start $vhost &>/dev/null
echo "虚拟机"$vhost"启动成功!
即将进入虚拟机"$vhost"系统界面"
sleep 3
#进入虚拟机界面
sudo virsh console $vhost
fi
}
#系统执行代码主体,通过调用函数实现
echo "欢迎使用虚拟机创建系统!"
#交互式输入虚拟机主机名
read -p "请输入需要创建的虚拟机名字:" vhost
#调用定义的函数完成虚拟机创建
createvhost
网友评论