下面是一組服務測試mfs的vagrant file範例:
儲存Vagrantfile檔案以後,執行如下指令檢視虛機配置:
執行up指令,批量建立虛機并啟動。
如果隻想啟動一台,執行:
vagrant基礎配置
Vagrantfile 配置檔案的格式簡單介紹一下。
1 檔案頭
說明檔案的格式資訊,處理方式等。
指定使用ruby格式,vi進行編輯的,所有檔案都采用這個檔案頭即可。
2 通用資料
設定一些基礎資料,供配置資訊中調用。
這裡是定義一個hashmap,以key-value方式來存儲vm主機名和ip位址。
3 配置資訊
參數2,表示的是目前配置檔案使用的vagrant configure版本号為Vagrant 1.1+,如果取值為1,表示為Vagrant 1.0.x Vagrantfiles,舊版本暫不考慮,記住就寫2即可。
本文隻對configure 2作說明,舊版本不多解釋了。
do … end 為配置的開始結束符,所有配置資訊都寫在這兩段代碼之間。
config是為目前配置命名,你可以指定任意名稱,如myvmconfig,在後面引用的時候,改為自己的名字即可。
3.1 基本配置資訊
3.1.1 鏡像
3.1.2 定義vm的configure配置節點
表示在config配置中,定義一個名為mfsmaster的vm配置,該節點下的配置資訊命名為mfsmaster_config;
如果該Vagrantfile配置檔案隻定義了一個vm,這個配置節點層次可忽略。
3.1.2.1 vm網絡環境配置
vagrant的網絡連接配接方式有三種:
NAT : 預設建立,用于讓vm可以通過host轉發通路區域網路甚至網際網路。
host-only : 隻有主機可以通路vm,其他機器無法通路它。
bridge : 此模式下vm就像區域網路中的一台獨立的機器,可以被其他機器通路。
host-only 模式的IP可以不指定,而是采用dhcp自動生成的方式,如 :
配置目前項以後,如果host有多個網絡擴充卡,第一次啟動會詢問橋接到哪個網絡,如:
我使用的是wifi,選擇1,繼續。
3.1.2.2 同步檔案夾配置
用來讓host與vm二者進行檔案同步。
預設地,vagrant會把工作目錄映射到vm的/vagrant目錄,如果需要增加更多同步檔案夾,使用上面的配置,第一個檔案夾為host主機的目錄,第二個檔案夾為vm中的目錄。
3.1.2.3 設定主機名
指定vm的hostname,會覆寫vm中/etc/hostsname中的設定。
3.1.2.4 端口轉發
guest和host是必須的,還有幾個可選屬性:
guest_ip:字元串,vm指定綁定的Ip,預設為0.0.0.0
host_ip:字元串,host指定綁定的Ip,預設為0.0.0.0
protocol:字元串,可選TCP或UDP,預設為TCP
3.1.2.5 vm提供者配置
3.1.2.2.1 vm provider通用配置
虛機容器提供者配置,對于不同的provider,特有的一些配置,此處配置資訊是針對virtualbox定義一個提供者,命名為vb,跟前面一樣,這個名字随意取,隻要節點内部調用一緻即可。
配置資訊又分為通用配置和個性化配置,通用配置對于不同provider是通用的,常用的通用配置如下:
3.1.2.2.2 vm provider個性化配置(virtualbox)
上面的provider配置是通用的配置,針對不同的虛拟機,還有一些的個性的配置,通過vb.customize配置來定制。
對virtual box的個性化配置,可以參考:<code>VBoxManage modifyvm</code> 指令的使用方法。其他虛機的provider,暫時未做測試。
擴充一下,如果建立的虛機很多,vm都混雜在一起,我們都知道virtualbox支援對vm進行分組。要在vagrant使用分組,可以在mfs的vagrantfile中如下自定義:
參數說明:
分組名是路徑格式,/開始,表示第一級目錄,可以指定多級目錄,如/mfs/chunk;
可以指定多個分組,用逗号分開,如:“/dev,/mfs”
每一個vm建立以後,都會放到mfs分組裡。可以在virtualbox管理界面檢視。
3.1.3 一組相同配置的vm
前面配置了一組vm的hash map,定義一組vm時,使用如下節點周遊。
如果不想定義app_servers,下面也是一種方案:
3.2 中央倉庫配置
指定box鏡像push釋出的位址,供box鏡像管理者使用。普通使用者不需關心。
3.3 vm部署
用來加載box以後,對vm的環境進行一些定制,比如設定環境變量,安裝軟體,部署程式等。如:
這部分内容不少,待續。
3.4 其他
還有很多很多配置,暫時沒用到,待續。
詳細的文檔可參考:
<a href="http://informatica.uv.cl/~gabriel/docs/manual_Virtual_Box_html/ch08.html#idp21992144">http://informatica.uv.cl/~gabriel/docs/manual_Virtual_Box_html/ch08.html#idp21992144</a>