016_编写脚本快速克隆 KVM 虚拟机
#!/bin/bash
#本脚本针对 RHEL7.2 或 Centos7.2
#本脚本需要提前准备一个 qcow2 格式的虚拟机模板,名称为/var/lib/libvirt/images/.rh7_template 的虚拟机模板
#该脚本使用 qemu-img 命令快速创建快照虚拟机
#脚本使用 sed 修改模板虚拟机的配置文件,将虚拟机名称、UUID、磁盘文件名、MAC 地址
IMG_DIR=/var/lib/libvirt/images
BASEVM=rh7_template
read -p "Enter VM number: " VMNUM
if [ $VMNUM -le 9 ];then
VMNUM=0$VMNUM #拼接
fi
if [ -z "${VMNUM}" ]; then #为空
echo "You must input a number."
exit 65
elif [ ${VMNUM} = ~ [a-z] ]; then #有字母
echo "You must input a number."
exit 66
elif [ ${VMNUM} -lt 1 -o ${VMNUM} -gt 99 ]; then # -o or
echo "Input out of range"
exit 67
fi
NEWVM=rh7_node${VMNUM} # node3..
if [ -e $IMG_DIR/${NEWVM}.img ]; then
echo "File exists." #镜像已存在
exit 68
fi
echo -en "Creating Virtual Machine disk image......\t" #提示正在创建...
qemu-img create -f qcow2 -b $IMG_DIR/.${BASEVM}.img $IMG_DIR/${NEWVM}.img &> /dev/null #创建前端盘
echo -e "\e[32;1m[OK]\e[0m" #提示OK
#virsh dumpxml ${BASEVM} > /tmp/myvm.xml #导出xml文件 或者
cat /var/lib/libvirt/images/.rhel7.xml > /tmp/myvm.xml
sed -i "/<name>${BASEVM}/s/${BASEVM}/${NEWVM}/" /tmp/myvm.xml
sed -i "/uuid/s/<uuid>.*<\/uuid>/<uuid>$(uuidgen)<\/uuid>/" /tmp/myvm.xml
sed -i "/${BASEVM}\.img/s/${BASEVM}/${NEWVM}/" /tmp/myvm.xml
#修改 MAC 地址,本例使用的是常量,每位使用该脚本的用户需要根据实际情况修改这些值
#最好这里可以使用便利,这样更适合于批量操作,可以克隆更多虚拟机sed -i "/mac /s/a1/0c/" /tmp/myvm.xml
echo -en "Defining new virtual machine......\t\t" #提示正在创建虚拟机
virsh define /tmp/myvm.xml &> /dev/null #创建虚拟机
echo -e "\e[32;1m[OK]\e[0m" #提示OK
最新文章
- 07. Web大前端时代之:HTML5+CSS3入门系列~H5 地理位置
- linux 安装jdk
- python设计模式
- UE4 通过HTTP 接受JPG并动态 构建 UTexture2D 简单例子
- android target unknown and state offline解决办法
- IT人学习方法论(二):学习误区
- redisb并发访问慢出现的问题
- Android设计模式—策略模式
- java数据结构系列——排列(2):有序阵列
- Java多维数组各轴长度可以不对齐
- Django-2- 模板路径查找,模板变量,模板过滤器,静态文件引用
- Spfa求最短路径
- C# 填充Excel
- Educational Codeforces Round 49 (Rated for Div. 2)A到C题
- bzoj 3993 星际战争 - 二分答案 - 最大流
- Go之go与channel组合使用
- 20155314 2016-2017-2 《Java程序设计》实验四 Android程序设计
- TP里where的查询方式,比如or应该怎么写?
- 如何使用android design support library
- selenium 之定位方法
热门文章
- Scratch 3.0,新在哪里?
- WINDOWS记事本的换行\r\n
- 待续:s5p6818移植 uboot 2014.07 移植
- jq获取元素偏移量offset()
- 面试经典算法:优先队列,最大堆,堆排序,左偏树Golang实现
- 三、eureka服务端获取服务列表
- SVN 问题解决之 Working copy path does not exist in repository
- C++ DLL debug版本在其他PC上缺少依赖的处理方式
- FlowPortal BPM流程中调用封装好的API如何调试
- C++ 容器一图以蔽之