虛擬磁盤離線訪問工具--guestfish(2of2)
我的這個腳本只是創建了硬盤並帶有系統和更改的文件參數,卻並沒有建立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/
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)