手把手带你编写全自动链接克隆虚拟机脚本

本文出自老男孩教育大神讲师---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
#修改虚拟机的名字
web03
#删除虚拟机uuid
8e505e25-5175-46ab-a9f6-feaa096daaa4
#删除mac地址

#修改磁盘路径

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#()(.*)()#\1test\3#g' /tmp/test.xml
#删除虚拟机uuid
sed -i '//d' /tmp/test.xml
#删除mac地址
sed -i '/)#\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#()(.*)()#\1${new_vm}\3#g" /tmp/${new_vm}.xml
#删除虚拟机uuid
sed -i '//d' /tmp/${new_vm}.xml
#删除mac地址
sed -i '/)#\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 "/tmp/${new_vm}.xml

#修改虚拟机的名字
sed -ri "s#()(.*)()#\1${new_vm}\3#g" /tmp/${new_vm}.xml
#删除虚拟机uuid
sed -i '//d' /tmp/${new_vm}.xml
#删除mac地址
sed -i '/)#\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是否可以写入的判断!

你可能感兴趣的:(手把手带你编写全自动链接克隆虚拟机脚本)