背景:在达内学习的时候提供的VIP6(centos6)教学环境,使用clone-vm命令可以快速创建虚拟机,但是新建的虚拟机没有配置IP、主机名和yum仓库,需要启动虚拟机后,手动进入console页面配置,比较麻烦。使用以下命令,可以快速配置IP、主机名和本地yum仓库。
原理:使用guestmount程序挂载虚拟机磁盘,并修改相关自定义信息,实现快速配置
[root@room1pc01 data]# cat clone.sh
#!/bash/sh
####By:PlatoWG Date:20180408 Version:2####
##查询是否安装了guestmount程序,如果没有安装则在宿主机上安装guestmount,并检查挂载点情况
which guestmount
if [ $? != 0 ];then yum -y install libguestfs.x86_64 libguestfs-tools.x86_64
fi
if [ -e /mnt/vdisk ];then echo "mount point exist!";else mkdir /mnt/vdisk
fi
##创建虚拟机磁盘挂载点,并定义相关变量
vdisk=/mnt/vdisk
read -p "please input a image file:" img
read -p "please input new hostname:" nhostname
read -p "please input new server IP:" nIP
echo "Please confirm the NEW SERVER's informations"
if [ -e $img ];then echo "Your img file is $img";else echo "Your img file does not exist!";exit;
fi
echo "Your hostname is $nhostname"
echo "Your IP is $nIP"
read -p "Please enter "y" for confirmation:" confir
if [ $confir != y ];then exit 100;
fi
##使用guestmount挂载虚拟机磁盘,并修改IP、主机名相关信息
umount $vdisk &> /dev/null
guestmount -a $img -i $vdisk
sed -i '/HOSTNAME/d' $vdisk/etc/sysconfig/network
sed -i '$aHOSTNAME='"${nhostname}"'' $vdisk/etc/sysconfig/network
sed -i "/BOOTPROTO/d" $vdisk/etc/sysconfig/network-scripts/ifcfg-eth0
sed -i '/IPADDR/d' $vdisk/etc/sysconfig/network-scripts/ifcfg-eth0
sed -i '/INETMASK/d' $vdisk/etc/sysconfig/network-scripts/ifcfg-eth0
sed -i -e '$aBOOTPROTO=static' -e '$aIPADDR='"${nIP}"'' -e '$aNETMASK=255.255.255.0' $vdisk/etc/sysconfig/network-scripts/ifcfg-eth0
##配置基于宿主机发布的yum源
echo "[rhel-6]
name=Linux NSD
baseurl=http://192.168.4.254/RHEL6
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release" > $vdisk/etc/yum.repos.d/rhel6.repo
IP=`sed -n '/IPADDR/p' $vdisk/etc/sysconfig/network-scripts/ifcfg-eth0`
HOSTNAME=`sed -n '/HOSTNAME/p' $vdisk/etc/sysconfig/network`
umount $vdisk
##打印新建主机信息
echo "A new server had created!"
echo "Ner server information:"
echo "${HOSTNAME}"
echo "${IP}"