我想创建一个通用的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
答案 0 :(得分:0)
您可以在Vagrantfile
下为您的用户设置默认~/.vagrant.d
。如果在当前目录中找不到Vagrantfile,则默认为该目录。
另一种更加突兀的方式是在/
的Vagrantfile中定义:/Vagrantfile
有关'加载订单和合并的更多信息'在https://docs.vagrantup.com/v2/vagrantfile/特别是此通知:
在每个级别,设置集将与先前的值合并。这究竟意味着什么取决于设置。对于大多数设置,这意味着较新的设置会覆盖旧设置。但是,对于诸如定义网络之类的事情,网络实际上是相互附加的。默认情况下,您应该假设设置将相互覆盖。如果行为不同,将在相关文档部分中注明。