一个小脚本,练习环境下大家可以用用:
前提在 /var/lib/libvirt/images 目录下有用于创建虚拟机的模板镜像template.img及模板配置文件template.xml,
#!/bin/bash
#This script will create a virsh-domain named $1.
IMG_DIR=/var/lib/libvirt/images
#alias ssh="ssh -o StrictHostKeyChecking=no"
#UUID=uuidgen
#判断输入,用法
[ $# -eq 0 ]&&echo "请使用:vm [+虚拟机名称]"&&exit
#定义域
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"
}
#克隆镜像
vircre () {
qemu-img create -f qcow2 -b $IMG_DIR/template.img /var/lib/libvirt/images/$1 >/dev/null
}
vircre $1.img
virdef $1
#判断是否安装guestmount工具(挂载虚拟机镜像用).
which guestmount &>/dev/null
[ $? -ne 0 ] && echo -e "请先安装guestmount工具.\n使用:yum -y install libguestfs-tools-c" && exit
#创建挂载点并挂载创建出来的虚拟机镜像.
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 $mountpoint
#读取变量
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
}
#其他一些自定义设置,
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等;
转载于:https://blog.51cto.com/13843846/2134353