Vagrantfile的主要功能是描述項目所需的機器類型,以及如何配置和提供這些機器。之因此稱爲Vagrantfiles,是由於文件的實際文本文件名是Vagrantfile(除非文件系統在嚴格的區分大小寫模式下運行,不然大小寫可有可無)。html
每一個項目運行一個Vagrantfile文件,Vagrantfile文件應該提交給版本控制。這容許參與項目的其餘開發人員檢查代碼,運行vagrant up,並繼續他們的工做。Vagrantfile文件可移植到每一個支持vagrant的平臺。編程
Vagrantfile的語法是Ruby,但修改Vagrantfile並不須要瞭解Ruby編程語言,由於它主要是簡單的變量賦值。實際上,Ruby甚至不是最受歡迎的社區vagrant,這應該有助於說明,儘管人們沒有Ruby知識,但vagrant是很是成功的。網絡
當運行任何vagrant命令時,vagrant會爬上目錄樹,尋找它能找到的第一個Vagrantfile,首先從當前目錄開始。因此若是你在/home/mitchellh/projects/foo中運行vagrant,它會搜索如下路徑來尋找流浪者文件,直到找到一個:編程語言
/home/mitchellh/projects/foo/Vagrantfile /home/mitchellh/projects/Vagrantfile /home/mitchellh/Vagrantfile /home/Vagrantfile /Vagrantfile
這個特性容許你從項目中的任何目錄運行vagrant。
經過將VAGRANT_CWD環境變量設置爲其餘路徑,能夠更改vagrant查找Vagrantfile文件的起始目錄。ide
須要理解的一個重要概念是vagrant如何加載Vagrantfile文件。實際上,vagrant加載了一系列Vagrantfiles文件,併合並了設置。這容許不一樣級別的Vagrantfiles文件覆蓋之前的設置。Vagrantfile按以下所示的順序加載。請注意,若是在任何步驟中沒有找到Vagrantfiles,vagrant將繼續下一步。spa
~/.vagrant.d目錄
)。這容許你爲系統用戶指定一些默認值在每一個級別,設置集將與之前的值合併。這究竟意味着什麼,取決於環境。對於大多數設置,這意味着新的設置將覆蓋舊的設置。然而,對於諸如定義網絡之類的事情,網絡其實是相互附加的。默認狀況下,你應該假設設置將相互覆蓋。若是行爲不一樣,將在相關文檔部分中記錄。vagrant
在每一個Vagrantfile文件中,你能夠指定多個Vagrant.configure塊。全部配置將按照定義的順序合併到一個Vagrantfile文件中。版本控制
繼續往下看code