1. 程式人生 > >虛擬磁盤離線訪問工具--guestfish(2of2)

虛擬磁盤離線訪問工具--guestfish(2of2)

otp line con $1 for IT fis his ted

現在再來說一說關於批量建立虛擬機的問題。根據不同的需要和要求,用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)