1:分析脚本的目的
脚本,支持 老虚拟机名称 新虚拟机名称
2:任务拆解
a:生成虚拟机磁盘文件 qemu-img create -f qcow2 -b old_kvm.qcow2 new_kvm.qcow2
b:生成虚拟机的配置文件
c:导入虚拟机并进行启动测试
virsh define new_kvm.xml
virsh start new_kvm
版本1:不支持传参
#!/bin/bash
qemu-img create -f qcow2 -b /data/web02.qcow2 /data/test.qcow2
virsh dumpxml web02 >/tmp/test.xml
sed -ri 's#()(.)()#\1test\3#g' /tmp/test.xml
sed -i '//d' /tmp/test.xml
sed -i '/<mac address/d' /tmp/test.xml
sed -ri "s#(<source file=')(.)('/>)#\1/data/test.qcow2\3#g" /tmp/test.xml
virsh define /tmp/test.xml virsh start test
版本2:
#!/bin/bash
new_vm=$1
qemu-img create -f qcow2 -b /data/web02.qcow2 /data/${new_vm}.qcow2
virsh dumpxml web02 >/tmp/${new_vm}.xml
sed -ri "s#()(.)()#\1${new_vm}\3#g" /tmp/${new_vm}.xml
sed -i '//d' /tmp/${new_vm}.xml
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
virsh define /tmp/${new_vm}.xml
virsh start ${new_vm}
版本3:
virsh dumpxml web01 >web03.xml
vim web03.xml
<name>web03</name>
<uuid>8e505e25-5175-46ab-a9f6-feaa096daaa4</uuid>
<mac address='52:54:00:4e:5b:89'/>
<source file='/opt/web03.qcow2'/>
#!/bin/bash
old_vm=$1
new_vm=$2
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
virsh dumpxml $old_vm >/tmp/${new_vm}.xml
sed -ri "s#()(.)()#\1${new_vm}\3#g" /tmp/${new_vm}.xml
sed -i '//d' /tmp/${new_vm}.xml
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
virsh define /tmp/${new_vm}.xml virsh start ${new_vm}