1. 程式人生 > >virtualbox+vagrant學習-4-Vagrantfile-1-簡介

virtualbox+vagrant學習-4-Vagrantfile-1-簡介

Vagrantfile

Vagrantfile的主要功能是描述專案所需的機器型別,以及如何配置和提供這些機器。之所以稱為Vagrantfiles,是因為檔案的實際文字檔名是Vagrantfile(除非檔案系統在嚴格的區分大小寫模式下執行,否則大小寫無關緊要)。

每個專案執行一個Vagrantfile檔案,Vagrantfile檔案應該提交給版本控制。這允許參與專案的其他開發人員檢查程式碼,執行vagrant up,並繼續他們的工作。Vagrantfile檔案可移植到每個支援vagrant的平臺。

Vagrantfile的語法是Ruby,但修改Vagrantfile並不需要了解Ruby程式語言,因為它主要是簡單的變數賦值。實際上,Ruby甚至不是最受歡迎的社群vagrant,這應該有助於說明,儘管人們沒有Ruby知識,但vagrant是非常成功的。

 

1.Lookup Path查詢路徑

當執行任何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檔案的起始目錄。

 

2.Load Order and Merging載入順序和合並

需要理解的一個重要概念是vagrant如何載入Vagrantfile檔案。實際上,vagrant載入了一系列Vagrantfiles檔案,併合並了設定。這允許不同級別的Vagrantfiles檔案覆蓋以前的設定。Vagrantfile按如下所示的順序載入。請注意,如果在任何步驟中沒有找到Vagrantfiles,vagrant將繼續下一步。

  • 與給定的機器中的box一起打包的Vagrantfile
  • 在你的根目錄下的Vagrantfile (預設指向 ~/.vagrant.d目錄)。這允許你為系統使用者指定一些預設值
  • 來自專案目錄的Vagrantfile。你可以在這個Vagrantfile檔案中為系統使用者指定一些預設值——這就是大多數時候要修改的Vagrantfile。
  • 多機器覆蓋(如果有的話),Multi-machine overrides
  • 指定provider覆蓋(如果有的話),Provider-specific overrides

在每個級別,設定集將與以前的值合併。這究竟意味著什麼,取決於環境。對於大多數設定,這意味著新的設定將覆蓋舊的設定。然而,對於諸如定義網路之類的事情,網路實際上是相互附加的。預設情況下,你應該假設設定將相互覆蓋。如果行為不同,將在相關文件部分中記錄。

在每個Vagrantfile檔案中,你可以指定多個Vagrant.configure塊。所有配置將按照定義的順序合併到一個Vagrantfile檔案中。

 

3.Available Configuration Options可用的配置選項

繼續往下看