Linux快速建立虛擬機的一個腳本,並在建立時指定其IP地址

一個小腳本,練習環境下你們能夠用用:
前提在 /var/lib/libvirt/images 目錄下有用於建立虛擬機的模板鏡像template.img及模板配置文件template.xml,bash

#!/bin/bash
#This script will create a virsh-domain named $1.
IMG_DIR=/var/lib/libvirt/images
#判斷輸入,用法
[ ! $# -eq 1 ]&&echo "請使用:vm [+虛擬機名稱]"&&exitdom

#定義域
virdef () {
cp $IMG_DIR/.rhel7.xml /tmp/$1.xml
sed -i "/<name>/s/rh7_template/$1/" /tmp/$1.xml
sed -i "/rh7_template.img/s/rh7_template/$1/" /tmp/$1.xml
virsh define /tmp/$1.xml >/dev/null
echo -e "create $1 \e[32;1m[OK]\e[0m"
}ssh

#克隆鏡像
vircre () {
qemu-img create -f qcow2 -b $IMG_DIR/template.img /var/lib/libvirt/images/$1 >/dev/null
}ide

vircre $1.img
virdef $1工具

#判斷是否安裝guestmount工具(掛載虛擬機鏡像用).
which guestmount &>/dev/null
[ $? -ne 0 ] && echo -e "請先安裝guestmount工具.\n使用:yum -y install libguestfs-tools-c" && exitxml

#建立掛載點並掛載建立出來的虛擬機鏡像.
mountpoint="/media/virtimage"
[ ! -d $mountpoint ]&& mkdir -p $mountpoint
echo "請稍後..."
if mount | grep -q "$mountpoint" ;then
umount $mountpoint
fi
guestmount -a $IMG_DIR/$1.img -m /dev/sda1 -m /dev/rhel/root --rw $mountpointip

#讀取變量
echo "請選擇須要修改IP的網卡(序號):"
#echo -e "1) eth0:192.168.4.0/24\t2) eth1:192.168.2.0/24\n3) eth2:201.1.1.0/24\t4) eth3:201.1.2.0/24"
select dev in eth0 eth1 eth2 eth3
do
break
done
[ -z "$dev" ]&&umount -l $mountpoint &&echo "選擇錯誤"&&exit
read -p "請輸入IP地址(不須要掩碼):" addr虛擬機

#IP配置
ip_conf() {
if [ "$3" != "eth0" ] ;then
mv $2/etc/sysconfig/network-scripts/ifcfg-eth0 $2/etc/sysconfig/network-scripts/ifcfg-$3
sed -i "/DEVICE/s/=./=$3/" $2/etc/sysconfig/network-scripts/ifcfg-$3
sed -i "/NAME/s/=.
/=$3/" $2/etc/sysconfig/network-scripts/ifcfg-$3
fi
if grep -q "IPADDR" $2/etc/sysconfig/network-scripts/ifcfg-$3;then
sed -i "/IPADDR/s/=./=$1/" $2/etc/sysconfig/network-scripts/ifcfg-$3
sed -i "/BOOTPROTO/s/=.
/=none/" $2/etc/sysconfig/network-scripts/ifcfg-$3
else
echo "IPADDR=$1" >> $2/etc/sysconfig/network-scripts/ifcfg-$3
fi
}it

#其餘一些自定義設置,
sed -i '/StrictHostKeyChecking/s/#//' /etc/ssh/ssh_config
echo "$1" > $mountpoint/etc/hostname
mkdir $mountpoint/root/.ssh
cat /root/.ssh/id_rsa.pub > $mountpoint/root/.ssh/authorized_keys模板

ip_conf $addr $mountpoint $dev
yum_conf $dev $mountpoint

#檢測配置,卸載掛載設備,啓動虛擬機
awk -F= -v x=$addr '$2==x{print "完成..."}' $mountpoint/etc/sysconfig/network-scripts/ifcfg-$dev
guestunmount $mountpoint
sleep 2
virsh start $1

在用guestmount掛載上虛擬機鏡像後,任何對掛載目錄下的修改操做在虛擬機啓動後均會生效,因此能夠根據本身的需求增長一些自定義配置,如配置yum等;

相關文章
相關標籤/搜索