本文出自老男孩教育大神讲师---oldqiang
1:分析脚本的目的
由于没有自动化链接克隆的工具,于是有了此脚本,该脚本的主要功能,实现全自动链接克隆!
脚本要求支持传入两个参数,一个老虚拟机名称和一个新虚拟机名称
2:任务拆解
a:生成虚拟机磁盘文件
qemu-img create -f qcow2 -b 49-web03.qcow2 49-web04.qcow2
b:生成虚拟机的配置文件
virsh dumpxml web01 >web03.xml
vim web03.xml
#修改虚拟机的名字
<name>web03</name>
#删除虚拟机uuid
<uuid>8e505e25-5175-46ab-a9f6-feaa096daaa4</uuid>
#删除mac地址
<mac address='52:54:00:4e:5b:89'/>
#修改磁盘路径
<source file='/opt/web03.qcow2'/>
c:导入虚拟机并进行启动测试
virsh define web03.xml
virsh start web03
版本1:不支持传参
#!/bin/bash
#a:生成虚拟机磁盘文件
qemu-img create -f qcow2 -b /data/web02.qcow2 /data/test.qcow2
#b:生成虚拟机的配置文件
virsh dumpxml web02 >/tmp/test.xml
#修改虚拟机的名字
sed -ri 's#(<name>)(.*)(</name>)#\1test\3#g' /tmp/test.xml
#删除虚拟机uuid
sed -i '/<uuid>/d' /tmp/test.xml
#删除mac地址
sed -i '/<mac address/d' /tmp/test.xml
#修改磁盘路径
sed -ri "s#(<source file=')(.*)('/>)#\1/data/test.qcow2\3#g" /tmp/test.xml
#c:导入虚拟机并进行启动测试
virsh define /tmp/test.xml
virsh start test
版本2: 支持传一个参数
#!/bin/bash
new_vm=$1
#a:生成虚拟机磁盘文件
qemu-img create -f qcow2 -b /data/web02.qcow2 /data/${new_vm}.qcow2
#b:生成虚拟机的配置文件
virsh dumpxml web02 >/tmp/${new_vm}.xml
#修改虚拟机的名字
sed -ri "s#(<name>)(.*)(</name>)#\1${new_vm}\3#g" /tmp/${new_vm}.xml
#删除虚拟机uuid
sed -i '/<uuid>/d' /tmp/${new_vm}.xml
#删除mac地址
sed -i '/<mac address/d' /tmp/${new_vm}.xml
#修改磁盘路径
sed -ri "s#(<source file=')(.*)('/>)#\1/data/${new_vm}.qcow2\3#g" /tmp/${new_vm}.xml
#c:导入虚拟机并进行启动测试
virsh define /tmp/${new_vm}.xml
virsh start ${new_vm}
版本3:支持传两个参数
#!/bin/bash
old_vm=$1
new_vm=$2
#a:生成虚拟机磁盘文件
old_disk=`virsh dumpxml $old_vm|grep "<source file"|awk -F"'" '{print $2}'`
disk_tmp=`dirname $old_disk`
qemu-img create -f qcow2 -b $old_disk ${disk_tmp}/${new_vm}.qcow2
#b:生成虚拟机的配置文件
virsh dumpxml $old_vm >/tmp/${new_vm}.xml
#修改虚拟机的名字
sed -ri "s#(<name>)(.*)(</name>)#\1${new_vm}\3#g" /tmp/${new_vm}.xml
#删除虚拟机uuid
sed -i '/<uuid>/d' /tmp/${new_vm}.xml
#删除mac地址
sed -i '/<mac address/d' /tmp/${new_vm}.xml
#修改磁盘路径
sed -ri "s#(<source file=')(.*)('/>)#\1${disk_tmp}/${new_vm}.qcow2\3#g" /tmp/${new_vm}.xml
#c:导入虚拟机并进行启动测试
virsh define /tmp/${new_vm}.xml
virsh start ${new_vm}
版本4:脚本可以进一步优化
添加老虚拟机是否存在的if判断,和/tmp是否可以写入的判断!