一段批量安装xen虚拟机的脚本

     2012年11月13日       teddy.sun       运维笔记->xen虚拟化       xen kickstart install 

vm-install脚本如下:
#!/bin/bash -
gen_vmmac() {
        local i=$1
        IP1_TMP=`echo $i | awk -F . '{print $1}'`
        IP2_TMP=`echo $i | awk -F . '{print $2}'`
        IP3_TMP=`echo $i | awk -F . '{print $3}'`
        IP4_TMP=`echo $i | awk -F . '{print $4}'`

        if [ $IP2_TMP -lt 16 ]; then
            mac2=0`printf "%X" $IP2_TMP`
        else
            mac2=`printf "%X" $IP2_TMP`
        fi

        if [ $IP3_TMP -lt 16 ]; then
            mac3=0`printf "%X" $IP3_TMP`
        else
            mac3=`printf "%X" $IP3_TMP`
        fi

        if [ $IP4_TMP -lt 16 ]; then
            mac4=0`printf "%X" $IP4_TMP`
        else
            mac4=`printf "%X" $IP4_TMP`
        fi

        echo "00:16:3E:$mac2:$mac3:$mac4"
}

while read line
do
        echo $line | grep -q "^#"  && continue
        name=`echo $line | awk '{print $1}'`
        vcpu=`echo $line | awk '{print $2}'`
        vmem=`echo $line | awk '{print $3}'`
        disk=`echo $line | awk '{print $4}'`
        ip=`echo $line | awk '{print $5}'`
        os=`echo $line | awk '{print $6}'`
        mac=`gen_vmmac $ip`
        /usr/bin/virt-install  --name=$name  --vcpus=$vcpu  --ram=$vmem  --mac=$mac  --file=$disk  --location=OS_INSTALL_TREE/$os  --extra-args="ks=http://www.opstool.com/files/man/vm-ks.cfg ip=${ip} netmask=NETMASK gateway=GATEWAY"  --paravirt --noautoconsole --nographics
done< vms
在vm-install.sh下创建vms文件,内容格式如下:
host1   2 1000 /dev/sdc5  10.13.249.232 rhel-5-u8-64
host2   2 1000 /dev/sdc6  10.13.249.233 rhel-5-u8-64
host3   2 1000 /dev/sdc7  10.13.249.234 rhel-5-u8-64
第一列为vm主机名,第二列为cpu核数,第三列为内存大小,以MB为单位,第4列为vm的disk所在位置;这里可以是文件,也可以是分区,第5列为ip,第7列为os版本
OS_INSTALL_TREE为os安装树,如http://xxx.xxx.xxx.xxx/clone/,NETMASK为网络掩码,GATEWAY为网关,这些要根据实际情况修改一下。
kickstart文件可以参考http://www.opstool.com/files/man/vm-ks.cfg
这个脚本是抛砖引玉,大家可以根据自己的情况修改出更好的安装脚本。