kvm虚拟机自动化配置IP

在生产环境中,我们经常会克隆虚拟机,但是克隆出来的虚拟机如何配置IP地址是个问题。 以前我的解决方法是,通过 virsh console 进入虚拟机,手动配置IP信息。

但通过 console 很难实现自动化,只能再想其他的解决方案, 目前能想到的解决方案大概有两种,一是通过DHCP给虚拟机配置IP,二是在虚拟机内放置一个自动配置脚本

方案二的原理如下: 在虚拟机启动的时候运行一个脚本来配置IP信息 但是如何在虚拟机启动之前把这个配置脚本放进去是一个问题 幸好我们有 virt-copy-in 这个工具,它可以直接复制本地磁盘文件到虚拟机磁盘上,类似于 cp 命令。

一、配置 KVM 虚拟机模板:

  • 编辑 /etc/rc.d/rc.local,增加下面这行
/bin/bash /opt/set_private_ip.sh
  • 增加可执行权限
chmod +x /etc/rc.d/rc.local  

二、将脚本注入虚拟机镜像里

  • 安装libguestfs
yum install libguestfs-tools-c  
  • 确保虚拟机保持在关机状态
virt-copy-in -d my_guest set_private_ip.sh /opt/  

set_private_ip.sh 脚本内容如下:

#!/bin/bash
#for kvm instance configure the ip address

cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-eth1  
DEVICE="eth1"  
ONBOOT=yes  
BOOTPROTO=static  
IPADDR=192.168.1.16  
NETMASK=255.255.255.0  
EOF

/etc/init.d/network restart

sed -i '/set_private_ip/ d' /etc/rc.d/rc.local  

脚本可以根据需求进行编写,比如动态的生成IP信息等

三、 虚拟机开机

可通过之前配置的 IP 地址登录到虚拟机里,进行一些其他操作。


参考资料: