添加到Vagrant路径的末尾

时间:2014-09-12 19:31:29

标签: vagrant vagrantfile

我想创建一个通用的dev Vagrant环境,我可以从我系统的任何位置vagrant up创建。我know,Vagrant搜索以CWD开头的Vagrantfile,然后在每个父目录中搜索。我也知道设置VAGRANT_CWD环境变量可以告诉Vagrant在给定目录中开始搜索。

所以,我可以这样做:export VAGRANT_CWD=~/.dotfiles/vdevbox,其中vdevbox包含Vagrantfile以及我的开发环境的其他相关内容。这允许我从任何地方vagrant up,但它优先于我的CWD中的Vagrantfiles,这使得无法使用其他Vagrant环境(显然是失败)。

所以,基本上我需要Vashrant等同于Bash的PATH=$PATH:~/some/path。这是支持,还是有更好的方法来满足这个用例?

编辑以解决@ arturhoo的回答

上面链接的相同帮助页面提到了通过~/.vagrant.d/Vagrantfile合并设置。我认为这与Vagrant搜索dag的Vagrantfile启动env不同。我认为它严格限于合并设置,而Vagrant必须另外通过所述的搜索方法找到Vagrantfile以上。我尝试过,结果似乎支持我的假设。

[~/.vagrant.d]$ ls -rc | tail -n 2
Vagrantfile
bootstrap.sh
[~/test]$ ls
[~/test]$ vagrant up
# Error message about missing Vagrantfile

1 个答案:

答案 0 :(得分:0)

您可以在Vagrantfile下为您的用户设置默认~/.vagrant.d。如果在当前目录中找不到Vagrantfile,则默认为该目录。

另一种更加突兀的方式是在/的Vagrantfile中定义:/Vagrantfile

有关'加载订单和合并的更多信息'在https://docs.vagrantup.com/v2/vagrantfile/特别是此通知:

  

在每个级别,设置集将与先前的值合并。这究竟意味着什么取决于设置。对于大多数设置,这意味着较新的设置会覆盖旧设置。但是,对于诸如定义网络之类的事情,网络实际上是相互附加的。默认情况下,您应该假设设置将相互覆盖。如果行为不同,将在相关文档部分中注明。