如何让 OpenNebula 虚拟机自动获得 IP 等网络配置信息?
2012年04月12日 | 标签: centos, cloud, contextualize, opennebula, ubuntu | 作者:vpsee
制作完 OpenNebula 的 Ubuntu 虚拟机镜像后需要对镜像配置一下以适应所在的网络运行环境,因为我们的 OpenNebula 虚拟机使用的是网桥的方式,所以虚拟机启动后会使用现有网络,并企图从 DHCP 服务器那里获得 IP 地址,如果 DHCP 服务器不做绑定的话这样随便获得的 IP 地址并不符合我们在 small_network.net (onevnet create small_network.net) 定义的要求,我们希望虚拟机启动后能从 small_network.net 这个网络配置文件中获得相应的 IP 地址。OpenNebula 里面的 Contextualizing 部分就是用来对付这种情况的,不过 VPSee 在这里介绍一个更简单的偷懒办法:直接用一个启动脚本来搞定。OpenNebula 已经为我们准备了类似的脚本,只需要根据自己的要求调整一下就可以了,这里介绍 for ubuntu 和 for centos 两个版本的脚本,还有 for debian 和 opensuse 的。
Ubuntu 虚拟机
下载 for ubuntu 的 context 文件后放在合适的地方,这个脚本有点问题需要在下载的 vmcontext.sh 文件最后加上重启网络(/etc/init.d/networking restart)这行:
$ wget http://dev.opennebula.org/attachments/download/378/vmcontext.sh $ sudo -i # mv vmcontext.sh /etc/init.d/vmcontext # chmod +x /etc/init.d/vmcontext # ln -sf /etc/init.d/vmcontext /etc/rc2.d/S01vmcontext # echo "/etc/init.d/networking restart" >> /etc/init.d/vmcontext
CentOS 虚拟机
下载 for centos 的 context 文件后放在合适的地方:
# wget http://dev.opennebula.org/projects/opennebula/repository/revisions/master/raw/share/scripts/centos-5/net-vmcontext/vmcontext # mv vmcontext.sh /etc/init.d/vmcontext # chmod +x /etc/init.d/vmcontext # chkconfig --add vmcontext # reboot
还记得上次说的给 OpenNebula 虚拟机增加 swap 分区的问题吗,直接把激活 swap 的部分放在 vmcontext 里就不必每次创建虚拟机后再增加 swap 的繁琐工作了。
# echo "swapon /dev/sdb" >> /etc/init.d/vmcontext
您说的方法是在什么版本上呢。
我试过opennebula3.2.1,vm是ubuntu12.04,多次失败,不得其解。是不是版本问题呢
@jeff
这个问题相对独立,和 opennebula 版本关系不大,2.2 以上支持 Contextualizing 的版本都可以。