vSphere部署系列之10——虛擬機模板和規範linux
在前面的博文章節中,已搭建了羣集,並啓用了HA和DRS,但尚未劃分資源池,這種狀況已經能夠應付實際生產環境。資源池的建立和配置比較簡單、難點在對配額的理解和按需劃分。有興趣的朋友能夠網上查閱相關資料,這裏暫不做研究。windows
vCenter提供了模板功能,可把一臺已部署好的虛擬機轉換爲模板,而後以此模板爲鏡像批量部署虛擬機。這一節是關於虛擬機模板及其管理規範方面的操做。服務器
實驗環境整體規劃,請見前面的博文《vSphere部署系列之03——實驗環境整體規劃》網絡
▲整體規劃網絡拓撲圖ide
1、前期工做工具
在使用模板以前,須要先安裝"樣板"虛擬機,而且將該虛擬機轉化(或克隆)成"模板",之後再須要此類的虛擬機時,以此爲模板派生或克隆出多臺虛擬機。學習
本案在羣集中建立基於Windows Server 2008R2系統和 CentOS 6.5系統的兩個虛擬機,名字分別爲Win2008R2-Temp和CentOS-Temp。ui
在系統中進行一些常規性軟件部署(對於Windows Server 2008R2,還須要激活系統、更新補丁),並安裝好VMware Tools。(VMware Tools的安裝很簡單,具體詳見《vSphere部署系列之05——虛擬機的建立和設置》)spa
2、將虛擬機轉換成模板 操作系統
本案是在vSpherer Client鏈接vCenter Server的主界面中進行。
將虛擬機轉換成模板,操做很簡單。在vSpherer Client中,定位到要轉換成模板的虛擬機,用鼠標右鍵單擊,從彈出的快捷菜單中選擇"轉換成模板"便可。
注:將虛擬機「轉換成模板」的操做,虛擬機不保留、只能做模板使用,如果選擇「克隆爲模板」,則在虛擬機的基礎上,克隆出與此虛擬機"徹底同樣"的虛擬機爲模板,原虛擬機仍然可使用。
▲將虛擬機Win2008R2-Temp轉換爲模板
*按一樣步驟,也將CentOS-Temp轉換成模板。
虛擬機轉換成模板後,在「清單->主機和羣集」左則列表中不顯示,可選擇羣集而後在右則「虛擬機」頁面中查看。也可切換到「清單->虛擬機和模板」中查看。
▲清單->主機和羣集,虛擬機分頁中查看模板
▲清單->虛擬機和模板,在左則列表中查看模板,右則摘要中可查看模板信息
注:模板與虛擬機的圖標是不一樣的
2、從模板部署虛擬機,不自定義方式
經過模板部署虛擬機,有不自定義方式和自定義方式兩種。前者比後者簡單不少,後者須要建立並應用自定義規範。這裏以模板Win2008R2-Temp爲例,先介紹不自定義方式的步驟。
在「清單->虛擬機和模板」中,定位到模板Win2008R2-Temp,用鼠標右鍵單擊,從彈出的快捷菜單中選擇「從該模板部署虛擬機」,將會彈出「部署模板」對話框。
▲從模板Win2008R2-Temp部署虛擬機
注:「轉換成虛擬機」子菜單,可將模板從新轉爲虛擬機。當模板系統須要更改配置或是多安裝某些軟件時,可經過此方法實現。
▲部署模板對話框,名稱和位置設置,在這裏爲虛擬機命名、選擇位置
這裏只看到數據中心SQ-DataCenter,若是數據中心中有歸類的文件夾,也是可見、可選的。
▲主機和羣集設置,在此選擇虛擬機將要駐留的主機
因爲環境中配置了羣集,這裏要先選擇羣集
▲主機和羣集設置,在此選擇虛擬機將要駐留的主機
若是羣集中有配置了資源池,還會有選擇資源池的步驟。
▲存儲器設置,在此選擇虛擬機將要使用的存儲位置,這裏選擇共享存儲SQST01-244001
虛擬機磁盤格式設置爲默認的與格式相同。
▲自定義設置, 在此選擇是否對虛擬機自定義,這一步很關鍵,這裏選擇「不自定義」,
若是選擇「使用現有自定義規範自定義」,則須要使用相關的規範。後文會講述。
「建立後打開此虛擬機的電源」默認是不勾選的,這裏手動勾選。
▲虛擬機設置摘要,在此單擊「完成」按鍵,即完成該模板部署操做
注,此處不建議選擇「編輯虛擬機硬件」,可在虛擬機部署完畢後再修改
模板部署完成後,在任務欄中,可看到虛擬機被建立的進度。虛擬機建立完成後,在「清單->主機和羣集」和「清單->虛擬機和模板」的列表中可見。
經過以上步驟部署的虛擬機跟模板如出一轍,有相同的IP、主機名及配置,對於Windows操做系統而言,其SID也是同樣。這在網絡中,尤爲有域環境中,會出現問題。須要進系統使用sysprep對系統從新封裝。在批量部署的狀況下,工做量仍是挺大的。
有一個工具能夠幫助解決這些問題,那就是自定義規範管理器。
3、建立用於自定義部署的自定義規範
vCenter可以使用sysprep程序對Windows Server等產品進行後期定製,其底層的原理與Widows系統裏的重封裝是同樣的,只是把sysprep從新封裝的準備工做集成到vCenter中,而且是在經過模板部署虛擬機時進行,而不是在製做模板前進行。
下面經過對Windows Server 2008 R2 SP1行定製,介紹"定製規範"的使用。
一、把操做系統對應的sysprep文件拷貝到vCenter服務器特定的目錄下
對於Windows Server 2008 R2 SP1而言,sysprep文件在系統安裝目錄中能夠找到,具體路徑爲C:/windows/sysyem32/sysprep,在運行窗口中運行sysprep命令,並按回車,便可進入C:/windows/sysyem32/目錄。
本案中,因爲 vCenter所在的系統(本案爲虛擬機sqvcenter)就是Windows Server 2008 R2 SP1。直接登陸該系統,將C:/windows/sysyem32/ 目錄下的sysprep文件拷貝到C:/program Files/VMware/infrastructure/VirtualCenter Server/目錄下(VirtualCenter Serve目錄是vCenter安裝時自動生成的)便可。
若是模板爲Windows Server 2003/2003R2的系統,sysprep文件,須要從系統鏡像對/support/tooles/deploy.cab解壓獲得,而後經過遠程操做,將其拷貝到
C:/program Files/VMware/infrastructure/VirtualCenter Server/目錄下。
二、建立自定義規範
這項操做是在「自定義規範管事器」中進行。
▲在「主頁」中找到「自定義規範管理器」,單擊進入
在自定義規範管事器中,可建立適用於Window Server和Linux操做系統的規範。
下面,建立一個適用於Winodws Server(包括2003/2008/2012等版本)系統的規範。
▲在「自定義規範管事器」中,右擊,在彈出的菜單裏選擇「新建」,將會彈出「新建自定義規範」對話框。
▲「新建自定義規範」對話框,第一步是選擇目標虛擬機操做系統和設備規範名稱,
在「目標虛擬機操做系統」下拉列表框中有「Windows」和「Linux」兩項,這裏選擇Windows,
規範名稱需自行填寫,爲了便於識別,通常以「操做系統+業務類型」進行命名,這裏填寫爲Win2008R2_SP1。也可填寫更詳細的描述。
▲註冊信息設置
▲計算機名稱設置,選擇「在部署嚮導中輸入名稱」
▲Windows許可證設置,本案模板是經過KMS激活了的,這裏不須要設置產品密鑰。
▲管理員密碼設置,管理員密碼可留空以保留原鏡像虛擬機管理員密碼,或指定一個新的密碼
▲時區設置
▲登陸時命令運行設置,保留爲空
▲網絡設置,選擇「自定義設置」
▲網絡接口自定義設置,IP地址默認爲DHCP獲取方式,單擊「…」屬性按鍵,將彈出「網絡屬性」對話框
▲網絡屬性對話框,在此設置子網掩碼、網關和DNS等,單擊「肯定」按鈕,返回網絡接口自定義對話框
▲網絡接口自定義設置,此時IP地址爲「提示用戶」方式
▲工做組或域設置,這裏設置爲本地工做組WORKGROUP
▲操做系統選項設置,這一項是爲了生成新SID,必定要勾選
▲設置摘要,單擊「完成」按鈕以完成自定義規範。
*按相似的步驟,再建立適用於Linux系統的規範CentOS6.5_x64。
其中在「屬性」的目標虛擬機操做系統一項中,選項Linux;
在「計算機名稱」一項中須要設置域名,將其至爲「localhost」,以下圖所示;
「工做組或域」一項則沒有,這三處跟Windows規範有所不一樣。
▲Linux規範中計算機名一項,將域名設置爲「localhost」
規範建立完成後,會在自定義管理器中羅列。
▲新建的CentOS6.5_x64規範和Win2008R2_SP1規範
4、從模板部署虛擬機,使用自定義規範方式
下面以Windows系統爲例,經過使用自定義規範的方式,從模板Win2008R2-Temp部署虛擬機Win2k8_241.42。
在「清單->虛擬機和模板」中,定位到模板Win2008R2-Temp,用鼠標右鍵單擊,從彈出的快捷菜單中選擇「從該模板部署虛擬機」,將會彈出「部署模板」對話框。
前面的步驟與前面第二節中的是同樣的,依次設置虛擬機名稱、駐留的主機、存放的存儲等,直到「客戶機自定義」。
▲客戶機自定義,這裏選項「使用如今自定義規範自定義」並選擇規範「Win2008R2_SP1」
▲用戶設置,在此設置NetBIOS名稱(即系統主機名)和IP地址
由於在規範「Win2008R2_SP1」規定了NetBIOS名稱爲「在部署嚮導中輸入名稱」,IP地址爲「當使用規範時,提示用戶輸入地址」方式。
這也是使用規範後, 惟一須要進行的手動設置的地方。其餘設置交由規範自動處理。
▲虛擬機設置摘要,在此單擊「完成」按鍵,即完成該模板部署操做
注,此處不建議選擇「編輯虛擬機硬件」,可在虛擬機部署完畢後再修改
因爲在「客戶機自定義」步驟中,勾選了「建立後打開此虛擬機的電源」,該虛擬機建立完成後,會自行啓動。首次啓動後,系統會自動按已設定的規範進行配置,並更新SID,此過程不須要人爲干預。
▲虛擬機自動重裝封裝過程
打開該虛擬機控制檯,觀察訪虛擬機的運行狀況,能夠看到,虛擬機先開機到登陸界面,過大概10秒左右(此期間不須要人爲操做),會自動啓起,而後自動進行sysprep從新封裝。直到系統再次重啓到登陸界面時,使用規範中設置的管理員密碼進行登陸便可。
▲從Win2k8_241.42摘要中,可看到該虛擬機此時的IP地址和主機名
▲進入虛擬機系統,在cmd命令窗口中輸入「whoami /user」,可查看本機的SID號
*按相似的操做,從CentOS-Temp模板部署虛擬機。
5、關於CentOS使用自定義規範方式
在vSphere5.5環境中,在作了CentOS6.5 x64模板,並建立了linux自定義規範以後,在從CentOS6.5 x64模板部署虛擬機時,會出現不能使用自定義規範的狀況。以下圖所示。
▲從CentOS6.5 x64模板部署虛擬機時,被提示不支持自定義客戶機操做系統。
本案在操做過程當中,也遇到這個問題。將CentOS-Temp模板從新轉換成虛擬機,運行並查看,發現Perl默認已安裝(網上不少資料說跟這個有關),VMTools已安裝(當前vSphere5.5中最新的版本)並正常運行。但就是不能使用自定義規範。有資料說VMware早已不支持CentOS的自定義規範,但在官方資料未到明確的說法。
後經排查,發現以上狀況與模板/虛擬機的「客戶機操做系統」性質有關。筆者初時在建立CentOS-Temp虛擬機時,「客戶機操做系統」選擇的是「CentOS4/5/6 (64位)。」後來從新建虛擬機,將「客戶機操做系統」性質一項設置爲「Red Hat Enterprise Linux 6 (64位)」,虛擬機配置完成後,再轉換成模塊,即可以從自定義規範部署。
▲CentOS-Temp模板的摘要,
從中能夠看到該模板的客戶機操做系統屬性爲「Red Hat Enterprise Linux 6 (64位)」。
▲從CentOS-Temp模板部署虛擬機,這裏可選擇以前建立的CentOS6.5_x64規範。
在常規的按「不自定義」方式部署的虛擬機時,會出現因虛擬機MAC地址(在虛擬機屬性中可查看)與虛擬機客戶系統MAC地址(在ifcfg-eth0配置文件中可查看)不一致而出現虛擬機沒法上網的狀況。須要在客戶系統的配置文件ifcfg-eth0中修改MAC,使之與虛擬機的MAC地址一致,並重啓系統(須要鏈接重啓兩次),才能連通網絡。
在這裏使用自定義規範後,虛擬機客戶系統內會自動生成一個ifcfg-eth1(即多了一個網卡eth1)配置文件,該配置文件的MAC(ifcfg-eth1中沒有列出來)與虛擬機實際MAC地址是一致的,且IP爲建立虛擬機時在「用戶設置」一步中指定的,系統經過該eth1上網。
但在因爲模板中爲eth0是指定了網關,虛擬機客戶系統在建立eth1時沒法爲其指定網關(從上圖可看出,缺乏GATEWAY字段),於是出現網絡只侷限在本地VLAN網段——本案中VLAN241是能夠pin通baidu.com的,但此時的CentOS虛擬機ping baidu.com被提示找不到主機。
解決的方法是,將ifcfg-eth0中的GATEWAY字段刪除,並在ifcfg-eth1中添加GATEWAY字段和具體網關地址,本案爲「GATEWAY=10.1.241.254」,修改完成後,重啓network服務後,ping baidu.com有返回。
▲ifcfg-eth0配置內容
▲ifcfg-eth1配置內容
▲虛擬機屬性中的MAC地址
不過,對於一些應用場景,多出了一個網卡eth1會讓人感到不習慣。若要使用ifcfg-eth0,手動將ifcfg-eth1文件刪除,同時修改ifcfg-eth0中的MAC地址(固然也要更改IP地址),使之與虛擬機的MAC地址一致,並重啓系統(須要鏈接重啓兩次)便可。
以上eth0的MAC地址與虛擬機MAC不匹配的狀況,與虛擬機中/etc/udev/rules.d/70-persistent-net.rules有關,此文件記錄了虛擬機在第一次建立時系統獲得的網卡信息及MAC地址。在上述的「不自定義」和「使用自定義規範」克隆的虛擬機中,爲解決MAC問題,更改ifcfg-eth0是一種方法,另外一種方式則是刪除該70-persistent-net.rules文件,並重啓系統(也是須要鏈接重啓兩次),這樣客戶系統就能夠學習到新的eth0 MAC地址了。