Linx快速创建虚拟机,并在创建时指定其IP地址

一个小脚本,练习环境下大家可以用用:
前提在 /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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值