我正面临一个奇怪的问题:(重新)包装一个Vagrant盒子,并希望有人可以告诉我在哪个方向看 . 这就是故事
-
我安装了Vagrant并成功创建了一些木偶清单,一切正常,流浪......准备,......
-
然后我需要切换到失败的NFS,因为我的客户操作系统上没有安装nfs(Ubuntu 11.04-amd64)
-
我在来宾操作系统上安装了nfs-common(
sudo apt-get install nfs-common
) -
vagrant halt
-
vagrant up
-
即使经过几次停止/启动命令,NFS挂载也能完美运行,我很高兴!
下一个合乎逻辑的步骤是打包盒子,这样每次VM被销毁时我都不需要重新安装nfs-common .
-
与上面相同的目录:
vagrant package
-
vagrant box add ubuntuvm2 package.box
-
rm package.box
-
将Vagrantfile中的
config.vm.box
行更改为ubuntuvm2 -
vagrant destroy
-
vagrant up
-
并且突然nfs挂载失败,当sshing进入VM我可以确认nfs-common确实安装但NFS挂载失败了:https://img.skitch.com/20120302-kwix296t44y31rxkd52pwm72f4.jpg
任何人都知道在哪个方向开始寻找解决方案?
我在OS-X Lion上使用Virtualbox 4.1.8和Vagrant 1.0.0
4 回答
我遇到了同样的问题,但我已经弄明白了 . 至少它现在对我有用 . :)
TL;DR:
检查/ etc / exports是否存在语法错误,并使用您确保有效的条目重新创建/ etc / exports .
验证盒子上的网络接口是否已正确初始化(检查/ etc / network / interfaces并运行ifconfig -a) .
至少Debian和Ubuntu在/etc/udev/rules.d/70-persistent-net.rules中存储有关持久性网络设备的信息 . 如果您看到eth1初始化为eth2,那是因为在创建新的盒子实例时会重新生成网卡的mac地址 . rm /etc/udev/rules.d/70-persistent-net.rules并重新包装你的盒子 .
如果您无法重新打包您的盒子更新/ etc / network / interfaces以使用eth2的eth2 instad
Long form:
Vagrant是1.0.1
OS X是10.7.3
Box是自定义Debian Wheezy 64 .
当重新加载或重新创建框时,它将在NFS安装上死亡并显示典型消息 .
使用NFS Manager检查/ etc / exports文件,它告诉我/ etc / exports包含语法错误 .
我用这个条目清理/ etc / exports并测试nfs客户端和服务器:
当运行vagrant时,NFS安装再次正常工作 .
在apt-get dist-upgrade之后重新打包时,我注意到NFS文件夹不会再次挂载 .
这次/ etc / exports文件中没有错误 . 我发现Vagrant没有初始化主机本地接口 .
/ etc / network / interfaces包含这个:
ifconfig -a返回了这个:
接口未正确定义 . 在更新/ etc / network / intefaces节以使用eth2之后,NFS安装再次正常工作 .
这是一个关于此问题和解决方案的漏洞:
https://github.com/mitchellh/vagrant/issues/997
编辑
/etc/udev/rules.d/70-persistent-net.rules
并删除除eth0
以外的接口的行vagrant package
vagrant box add mypack package.box
vagrant destroy
在
Vagrantfile
设置config.vm.box
至mypack
vagrant up
我在MAC OS X 10.7.5和CentOS 6.2 64bit上测试了这个
UPDATE: 该错误现已关闭且moved但看起来人们仍然遇到问题 .
除了现有的答案:不要忘记可能的防火墙 . 如果您在主机上运行防火墙 . 该错误非常通用,即使错误消息似乎没有表明这一点 .
如果您使用NoobProof和/或IceFloor,请禁用防火墙或进行适当的例外处理 .
在Ubuntu 12主持人/ Ubuntu 12上,以下为我的话语工作
注意;我还必须添加由Vagrant确定的流浪者和访客IP确定的主机IP到防火墙例外