. /etc/init.d/functions
Red="\e[1;31m"
Purple="\e[1;35m"
Green="\e[1;32m"
Blue="\e[1;36m"
Yellow="\e[1;33m"
End="\e[0m"
#克隆集群
clone() {
lists=`virsh list --all |awk '/.*template.*/{print $2}'`
echo "模板清单:"
echo "<-------------------->"
echo $lists
echo "<-------------------->"
read -p "请输入克隆模板: " template
#read -p "请输入克隆模板ip: " ip
read -p "请输入集群名称: " name
read -p "请输入节点数: " node
read -p "请输入ip起点(10.0.0.x): " num
for ((i=0;i<$node;i++)) ;do
let n=$i+1
let num=$num+1
arg[$i]="$name-0$n"
virt-clone -o ubuntu20.04-template -n ${arg[$i]} -f /var/lib/libvirt/images/${arg[$i]}.qcow2
virsh start ${arg[$i]} || continue
sleep 60
echo $num ${arg[$i]}
ssh root@10.0.0.100 "sed -i -r 's@(^[[:space:]]+- 10.0.0.)[0-9]+@\1$num@' /etc/netplan/00-installer-config.yaml;hostnamectl set-hostname ${arg[$i]} ;reboot"
done
}
#删除集群
delete(){
lists1=`virsh list --all | awk 'NR!=1{print $2}'|sed -nr "s/^(.*)-[0-9]+$/\1/p" |uniq`
echo "<-------------------->"
for n in $lists1 ;do
echo -e "$Purple$n$End"
done
echo "<-------------------->"
read -p "请输入集群名称:" dname
for i in `virsh list --all| awk -v dname=$dname '$0 ~ dname{print $2}'`;do
echo -e "$Red$i$End"
virsh destroy $i &> /dev/null
virsh undefine --remove-all-storage $i &> /dev/null && action "删除成功" true || action "删除失败" false
done
}
#单节点启动
nodestart(){
echo "<-------------------->"
for m in `virsh list --all | egrep ".*off$"|awk '{print $2}'` ;do
echo -e "$Purple$m$End"
done
echo "<-------------------->"
read -p "请输入节点名称:" startnode
virsh start $startnode &> /dev/null && action "$startnode 节点启动成功" true || action "$startnode 节点启动失败" false
}
#单节点重启
noderestart(){
echo "<-------------------->"
for o in `virsh list --all | egrep ".*running$"|awk '{print $2}'` ;do
echo -e "$Purple$o$End"
done
echo "<-------------------->"
read -p "请输入节点名称:" restartnode
virsh reboot $restartnode &> /dev/null && action "$restartnode 节点重启成功" true || action "$restartnode 节点重启失败" false
}
#单节点关机
nodestop(){
echo "<-------------------->"
for p in `virsh list --all | egrep ".*running$"|awk '{print $2}'` ;do
echo -e "$Purple$p$End"
done
echo "<-------------------->"
read -p "请输入节点名称:" stopnode
virsh shutdown $stopnode &> /dev/null && action "$stopnode 节点关机成功" true || action "$stopnode 节点关机失败" false
}
#启动集群
clusterstart(){
lists2=`virsh list --all | awk 'NR!=1{print $2}'|sed -nr "s/^(.*)-[0-9]+$/\1/p" |uniq`
echo "<-------------------->"
for q in $lists2 ;do
echo -e "$Purple$q$End"
done
echo "<-------------------->"
read -p "请输入集群名称:" dname
for i1 in `virsh list --all| awk -v dname=$dname '$0 ~ dname{print $2}'`;do
echo -e "$Red$i1$End"
virsh start $i1 &> /dev/null && action "$i1 节点启动成功" true || action "$i1 节点启动失败" false
done
}
#关闭集群
clusterstop(){
lists3=`virsh list --all | awk 'NR!=1{print $2}'|sed -nr "s/^(.*)-[0-9]+$/\1/p" |uniq`
echo "<-------------------->"
for r in $lists3 ;do
echo -e "$Purple$r$End"
done
echo "<-------------------->"
read -p "请输入集群名称:" dname
for i2 in `virsh list --all| awk -v dname=$dname '$0 ~ dname{print $2}'`;do
echo -e "$Red$i2$End"
virsh shutdown $i2 &> /dev/null && action "$i2 节点关闭成功" true || action "$i2 节点关闭失败" false
done
}
#集群重启
clusterrestart(){
lists4=`virsh list --all | awk 'NR!=1{print $2}'|sed -nr "s/^(.*)-[0-9]+$/\1/p" |uniq`
echo "<-------------------->"
for s in $lists4 ;do
echo -e "$Purple$s$End"
done
echo "<-------------------->"
read -p "请输入集群名称:" dname
for i3 in `virsh list --all| awk -v dname=$dname '$0 ~ dname{print $2}'`;do
echo -e "$Red$i3$End"
virsh reboot $i3 &> /dev/null && action "$i3 节点重启成功" true || action "$i3 节点重启失败" false
done
}
PS3="请按要求输入操作选项:"
select lists in 克隆集群 删除集群 启动集群 关闭集群 集群重启 单节点启动 单节点关机 单节点重启 退出;do
case $REPLY in # 1 2 3 4 5 6 7 8
1)
echo -e "$Blue$lists$End"
clone
;;
2)
echo -e "$Red$lists$End"
delete
;;
3)
echo -e "$Green$lists$End"
clusterstart
;;
4)
echo -e "$Red$lists$End"
clusterstop
;;
5)
echo -e "$Yellow$lists$End"
clusterrestart
;;
6)
echo -e "$Green$lists$End"
nodestart
;;
7)
echo -e "$Red$lists$End"
nodestop
;;
8)
echo -e "$Yellow$lists$End"
noderestart
;;
9)
echo -e "$Blue$lists$End"
exit
;;
*)
echo -e "$Red输入错误$End"
;;
esac
done
转“脚本小王子“舒某写的一键克隆(删除、启动、停止等)KVM虚拟机集群
原创
©著作权归作者所有:来自51CTO博客作者大雨小柚子的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:脚本之一键备份Mysql
下一篇:脚本之一键安装nexus
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
裸睡的猪之爬虫小王子
今天想先和大家聊两个关于学Python的话题:话题一:我想学习Python,然后
python java 测试开发 -
kvm 克隆虚拟机
可以把/etc/sysconfig/network-script/ifcfg-eth0里面的MAC UUID都可以删除了
kvm centos xml ide -
克隆KVM虚拟机
克隆KVM虚拟机
虚拟机 KVM -
kafka集群一键启动与停止shell脚本
kafka集群一键启动与停止shell脚本准备工NAME="...
kafka bash hadoop -
WPF依赖属性和附加属性
简要讲解了附加属性和依赖属性
wpf Click xml 控件 -
JVM 线上调优与排查指南
mx4g -Xmn2gjps:查看 Java 进程jstat:监控 JVM 统计信息jmap:生成堆转储文件jstack:生成线程转储文件。
jvm 测试工具 调优 JVM 问题排查 -
前端通用文件下载方案:从 Blob 流处理到实际业务落地
前端文件下载功能!
#前端 #react.js #blob文件流 JSON ios
















