码迷,mamicode.com
首页 > 其他好文 > 详细

虚拟磁盘离线访问工具--guestfish(2of2)

时间:2018-06-21 11:52:53      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:磁盘   echo   固定   read   done   循环   script   path   paste   

现在再来说一说关于批量建立虚拟机的问题。根据不同的需要和要求,用guestfish 或者 virt-customize 都可以来实现,只是具体命令不一。我觉得后者比较更加的灵活和容易。因为virt分为customize,edit,builder,append,好多功能于一体,然后还可以互相套用。

我的这个脚本只是创建了硬盘并带有系统和更改的文件参数,却并没有建立vm。因为这个不是重点,导入进去就好了

假如有个场景里面,你要创建50 台虚拟机,并且各自需要自己的固定IP地址而不是DHCP自动分配,(假如要是自动分配的话,那就非常简单了,就是克隆50次,然后再直接import进去就好了)还有主机名。我认为简单的方法就是,先做一台样板机,是符合你的要求的。然后呢,写个脚本复制/clone那个硬盘50次,并且更改每个主机的ip,subnet,boot type,hostname等

看下我写的脚本:
#this is the script to create batched vms,
#it includes two parts,copy disks and modify vms‘ifcfg-eth0.
#created by Vincent
#!/bin/bash
path=/etc/sysconfig/network-scripts/ifcfg-eth0
while read line
do
ip=echo $line|awk ‘{print $1}‘
name=echo $line|awk ‘{print $2}‘
cp /vm/vm3.qcow2 /vm/${name}.qcom2
virt-customize -a /vm/${name}.qcom2 --append-line $path:IPADDR=$ip --append-line $path:NETMASK=255.255.255.0 --edit $path:s/BOOTPROTO=dhcp/BOOTPROTO=none/
done < /vm/list.txt
echo "${name}is done"

这个脚本很简单,用while read来做,加上主机名和IP地址都是已知,就直接导进来即可。假如要都是规律的话并且麻烦一点的话,100台主机IP,还有100个以kvm为前缀的主机都用for循环来做并且写在while read之前。然后用paste这个命令合成一个文件,再导入到while read里就可以了。如果再升级一点的或就直接改成函数,现在没啥时间,以后再说。

在这里我用的是virt-customize,因为后面可以加上edit这个扩展命令,因为呢这个命令可以带一个类似于sed的工具,也可以说是perl。 基本上sed的规则都可以实用。正是用这个命令更改了ifcfg-eth0 里面的 bootproto。list这个文件夹里面又有具体IP,主机名。

虚拟磁盘离线访问工具--guestfish(2of2)

标签:磁盘   echo   固定   read   done   循环   script   path   paste   

原文地址:http://blog.51cto.com/11419317/2131162

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!