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

现在再来说一说关于批量建立虚拟机的问题。根据不同的需要和要求,用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,主机名。

转载于:https://blog.51cto.com/11419317/2131162

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值