Virtualbox 使用自定义文件打包基本长方体

Virtualbox 使用自定义文件打包基本长方体,virtualbox,vagrant,Virtualbox,Vagrant,我有一个lucid32盒子的特定Vagrantfile,它安装了一些非常标准的软件包(PHP/MySQL/Apache),进行了一些特定的端口转发,等等,我设置了它,从git签出了一个项目,并更改了一些服务器配置,我想打包这个盒子供团队中的其他开发人员使用,所以我使用以下命令: vagrant package boxname --output test.box --vagrantfile Vagrantfile 我得到一个test.box文件,它在包中指出它正在添加我的特定文件,然后我运行:

我有一个lucid32盒子的特定Vagrantfile,它安装了一些非常标准的软件包(PHP/MySQL/Apache),进行了一些特定的端口转发,等等,我设置了它,从git签出了一个项目,并更改了一些服务器配置,我想打包这个盒子供团队中的其他开发人员使用,所以我使用以下命令:

vagrant package boxname --output test.box --vagrantfile Vagrantfile
我得到一个test.box文件,它在包中指出它正在添加我的特定文件,然后我运行:

vagrant box add boxname test.box
它出现在
vagrant框列表中
很好,现在当我创建一些测试目录,并执行
vagrant init boxname
之后是
vagrant up
然后,它为该框提供签出和所有文件,但不设置正确的端口转发, 事实上,它根本没有使用我打包的Vagrant文件,而是在该目录中生成了一个新的默认文件

我注意到在~/.vagrant.d/box/boxname中,它有一个默认的vagrant文件,还有一个我打包在includes/\u vagrant文件中的文件


是否有任何方法可以使特定的vagrant文件成为我执行
vagrant init boxname
时生成的文件?

这实际上都是按预期工作的。Vagrant在加载时加载多个Vagrant文件(不仅仅是来自
Vagrant init
的文件),其中一个是打包在盒子中的Vagrant文件。有关更多信息,请阅读此处的“文件加载顺序”:

简而言之:Vagrant按特定顺序加载多个Vagrant文件,并合并它们的配置。box Vagrantfile作为此过程的一部分加载到根Vagrantfile之前(来自
vagrant init
的文件)

目前无法生成使用
vagrant init
生成的骨架vagrant文件

放入打包文件中的配置(如端口转发)应该正确加载,因为在合并配置时,它应该只附加所有端口转发


如果没有发生这种情况,您应该报告一个bug!但是,为了得到一个合理的答案,事情应该是这样的。

这段代码对我来说很有用

vagrant package --output vagrant_example.box
只是一个快速更新: