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