virtualbox - 使用自定义 Vagrantfile 打包一个基本盒子

标签 virtualbox vagrant

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

vagrant package boxname --output test.box --vagrantfile Vagrantfile

我得到一个 test.box 文件,它在包装中注明它正在添加我的特定 Vagrantfile,然后我运行:
vagrant box add boxname test.box

它出现在 vagrant box list很好,现在当我创建一些测试目录并执行 vagrant init boxname后跟 vagrant up然后它为该框提供结帐文件和所有内容,但是 不是 设置正确的端口转发,
实际上根本没有使用我打包的 Vagrantfile,而是在该目录中生成了一个新的默认文件。

我在 ~/.vagrant.d/boxes/boxname 中注意到它具有默认的 Vagrantfile,以及我打包在 include/_Vagrantfile 中的那个

有什么方法可以让我在执行 vagrant init boxname 时生成特定的 Vagrantfile ?

最佳答案

这实际上都是按预期工作的。 Vagrant 在加载时会加载多个 Vagrantfile(不仅仅是 vagrant init 中的那个),而与盒子一起打包的 Vagrantfile 就是其中之一。有关更多信息,请在此处阅读“Vagrantfile 加载顺序”:https://www.vagrantup.com/docs/vagrantfile/#load-order-and-merging

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

目前无法制作由 vagrant init 生成的骨架 Vagrantfile。 .

您放入打包的 Vagrantfile 中的配置,例如端口转发,应该正确加载,因为在合并配置时,它应该只是附加所有端口转发。

如果这没有发生,你应该报告一个错误!但是为了一个如此的答案,这就是事情应该如何表现。

关于virtualbox - 使用自定义 Vagrantfile 打包一个基本盒子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14861604/

相关文章:

macos - ubuntu 12.04 virtual box vm 中用于我 mac 上共享文件夹的 git 行结束选项

virtual-machine - 无法为虚拟机打开 session

virtualbox - 允许 Vagrant 访问主机互联网

virtual-machine - 来自 External HD 的 Mac OSX VirtualBox 和 Windows 7 Guest

ubuntu-12.04 - Vagrant 不能需要 log4r

vagrant - 由于 sudo 需要 tty,Packer 构建失败

linux - 与 Virtualbox 通信的 Windows 程序

vagrant - 如何在vagrant box中配置私有(private)网络

Vim 撕裂 tmux Pane 的显示

apache - Vagrant 的端口转发不起作用