2014-09-12 164 views
0

我想創建一個通用開發Vagrant環境,我可以從我的系統上的任何地方登錄到vagrant up。 I know,Vagrant搜索以CWD開頭的Vagrantfile,然後在每個父目錄中搜索。我也知道設置VAGRANT_CWD環境變量可以讓你告訴流浪者開始搜索給定的目錄。添加到Vagrant路徑的末尾

所以,我可以這樣做:export VAGRANT_CWD=~/.dotfiles/vdevbox,其中vdevbox包含Vagrantfile和其他相關的東西爲我的開發環境。這使我可以從任何地方到vagrant up,但它優先於我的CWD中的Vagrantfiles,這使得無法使用其他Vagrant環境(顯然是失敗)。

所以,基本上我需要Bash的PATH=$PATH:~/some/path的流浪者等值。這是支持的,還是有更好的方法來滿足這種用例?

編輯解決@ arturhoo的回答

以上鍊接的同一幫助頁提到通過~/.vagrant.d/Vagrantfile合併設置。我認爲,這是一個不同於Vagrant搜索的Vagrantfile的目錄啓動一個env。我認爲它嚴格限制爲合併設置和流浪者必須另外通過上述搜索方法找到Vagrantfile。我試了一下,結果似乎支持我的假設。

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

回答

0

您可以在~/.vagrant.d下爲您的用戶設置默認Vagrantfile。如果在當前目錄中找不到Vagrantfile,它將默認使用那個。

另一種更obstrusive方式在Vagrantfile定義爲//Vagrantfile

更多信息關於「加載順序和合並」在https://docs.vagrantup.com/v2/vagrantfile/特別作出以下聲明:

在每個級別上,設置設置會與之前的值合併。這究竟意味着什麼取決於設置。對於大多數設置,這意味着較新的設置將覆蓋較舊的設置。但是,對於諸如定義網絡之類的事情,網絡實際上是相互連接的。默認情況下,您應該假定設置將相互覆蓋。如果行爲不同,將在相關文檔部分註明。

+0

我看到了這一點,並嘗試過它。我認爲這適用於合併設置,但它不同於搜索路徑查找一個Vagrantfile到加載過程。長話短說:它在實踐中不起作用(或者你看到它的工作?)。我會在我的問題中添加一個註釋。 – dfarrell07 2014-09-12 19:54:45