在vSphere 6.0的虛擬化作業(yè)環(huán)境中,想要批量創(chuàng)建大量虛擬機的方法有很多種,其中最簡單的做法就是創(chuàng)建一個.ps1的手稿程序文件,然后在PowerCLI命令行下執(zhí)行即可,其屬性只要輸入類似以下范例即可,也就是依序選定ESXi主機的地址、新虛擬機的名稱、參考的模板名稱、數(shù)據(jù)存儲區(qū)名稱以及來賓操作系統(tǒng)的自定義規(guī)范名稱??墒沁@種做法您得輸入多個新虛擬機的信息。另一種方式則是搭配foreach {}循環(huán)命令的做法,這種做法只要在每一次創(chuàng)建大量虛擬機時,修改所要創(chuàng)建的虛擬機數(shù)量變量與前綴即可。
圖3 CSV文件范例
New-vm -vmhost ESX01.lab01.com -Name SVR-01-Template WinServer2012_R2_Template -Datastore E S X 0 1-d a t a s t o r e-OSCustomizationspec WinServer2012_R2_Template
但是,像這種搭配foreach {}循環(huán)命令的做法雖然方便,但卻無法明確選定每一個虛擬機各自的名稱、數(shù)據(jù)存儲區(qū),以及所在的ESXi主機地址。在此建議您采用接下來要講解的第三種做法,那就是搭配CSV文件的方式來批量創(chuàng)建大量虛擬機,因為CSV的描述文件屬性在Excel中維護是非常容易的,并且不需要撰寫一個帶有foreach {}循環(huán)命令的復(fù)雜手稿程序。如圖3所示,筆者先以Excel創(chuàng)建一個新虛擬機清單,其中同樣包含了各項參數(shù)設(shè)置,比較特別的是我們還加入了CPU數(shù)量(NumCPU)與內(nèi)存大小(MemoryGB)選定。完成編輯后,再另存為新的.csv類型文檔即可。
接下來請開啟PowerCLI命令界面,并連接登錄vCenter Server,然 后 便可以依序輸入下列的變量設(shè)置以及命令參數(shù)的執(zhí)行,其中在New-VM命令之后的參數(shù),便是用來選定對應(yīng)的CSV文檔域名,例如 這 行 -Template $(Get-Template $_.Template)敘述,即是選定參照Template的域值。一旦成功執(zhí)行后,將可以看到添加的虛擬機清單。
$C S V = "C:VMTemplate.csv"
$Description = "這是顧大俠以CSV文檔批量創(chuàng)建虛擬機的范例"
$VirtualMachines=Import-CSV $CSV
$VirtualMachines | %{New-VM -Name $_.VMName-Template $(Get-Template$_.Template) -VMHost$(Get-VMHost $_.VMHost)-D a t a s t o r e $(G e t-Datastore $_.Datastore)-OSCustomizationSpec$(Get-OSCustomizationSpec$_.OSCustomizationSpec)}
如果執(zhí)行的過程之中出現(xiàn)了誤信息,極有可能是您所選定的CSV文件相關(guān)字段信息錯誤。另外,如果發(fā)生某一臺ESXi主機無法正常連接時,相對的虛擬機雖然無法成功創(chuàng)建,但系統(tǒng)仍會略過該錯誤,繼續(xù)創(chuàng)建下一個新的虛擬機。
如果您想要修改剛剛創(chuàng)建好的新虛擬機的某些屬性,例如CPU、內(nèi)存以及描述說明,則可以直接執(zhí)行下列命令。其中,-Confirm:$false參數(shù)設(shè)置表示省略確認(rèn)提示。
$VirtualMachines |%{ Set-VM -VM $_.VMName-N u m C p u $_.N u m C p u-MemoryGB $_.MemoryGB-Description $Description-Confirm:$false}
再舉一個批量修改新虛擬機屬性的例子。我們可以將剛創(chuàng)建好的所有虛擬機,其虛擬網(wǎng)卡類型均修改為高效的vmxnet3,這樣,可以讓虛擬機的網(wǎng)絡(luò)傳輸速度最快高達10GB。如果想要關(guān)閉或啟用網(wǎng)絡(luò)喚醒功能,則只要設(shè)置WakeOneLan參數(shù)值為True或False即可。
$VirtualMachines | %{Get-VM -Name $_.VMName| Get-NetworkAdapter |Set-NetworkAdapter -Type vmxnet3 -Confirm:$false}
完成批量大量虛擬機的創(chuàng)建之后,您可以立即登錄到vSphere Web Client界面中來查看,便可以發(fā)現(xiàn)這些虛擬機僅完成創(chuàng)建并沒有啟動,因此,如果您想要批量啟動這些新的虛擬機,只要接著執(zhí)行$VirtualMachines |%{ Start-VM -VM $_.VMName-Confirm:$false }命令參數(shù),即可一次完成這些新虛擬機的啟動。
當(dāng)我們在服務(wù)端的命令控制臺中,以管理員身分執(zhí)行vim-cmd vmsvc/destroy vmid命令參數(shù)來刪除選定的虛擬機時,便會發(fā)現(xiàn)虛擬機雖然已經(jīng)刪除,但在vSphere Web Client中 會 出 現(xiàn)orphaned字眼,而在傳統(tǒng)的vSphere Client界面中則不會有這現(xiàn)象。解決的方法在過去必須先創(chuàng)建一個虛擬機文件夾,然后將orphaned的虛擬機移動至此文件夾之后,再刪除整個文件夾。如今已經(jīng)不用這么麻煩,只要在它的節(jié)點上按下鼠標(biāo)右鍵,并點擊“所有Virtual Infrastructure操作→從清單中移除”即可。
盡管全新PowerCLI命令的使用相較于傳統(tǒng)的CLI命令增加了彈性,但對于已熟悉傳統(tǒng)CLI命令的管理人員來說,它仍有一些使用的優(yōu)點,像是在一些管理操作的命令參數(shù)上就會比PowerCLI來得簡單。舉例來說,如果您想要移除VM1虛擬機中的所有快照,在PowerCLI命令的使用上就必須執(zhí)行Get-VM -name VM1 | Get-Snapshot |Remove-Snapshot。若在傳統(tǒng)CLI的命令參數(shù)使用上就會簡短許多,只要執(zhí)行vim-cmd vmsvc/snapshot.remove VM1的ID即可。PowerCLI與傳統(tǒng)CLI命令用法的比對如表1所示。
圖4 取得特定虛擬機已運行的時間
表1 vSphere兩種命令語法比對
在如圖4所示的范例中,則是通過傳統(tǒng)CLI的vim-cmd命令參數(shù),在ESXi服務(wù)端命令控制臺中先執(zhí)行vim-cmd vmsvc/getallvms命令來取得所有虛擬機清單,然后再執(zhí)行vim-cmd vmsvc/get.summary 19 |grep uptimeSeconds命令參數(shù),來查詢VMID為19的虛擬機目前已運行的時間(單位=秒)。
無論虛擬化平臺的技術(shù)在未來會發(fā)展到何種程度,GUI操作界面與命令控制臺的使用,始終是相輔相成缺一不可的。讓我們看看在Windows的窗口世界中,雖然是以GUI界面的友善設(shè)計為其根本,但命令提示字符技術(shù)的發(fā)展在近五年以來卻不斷向上發(fā)展,其中Windows PowerShell的應(yīng)用更是標(biāo)榜比Linux的Shell更強更好用,原因就是它必須滿足不同應(yīng)用層次的用戶,這包括一般消費者、信息工作者以及IT專業(yè)人士。
相對的,在Linux的開源世界中,早已不再強調(diào)命令工具有多么強大,反而致力于窗口界面的友善設(shè)計來發(fā)展,且不管是哪一個Linux的發(fā)行版,都希望能夠持續(xù)發(fā)展出有別于Windows的窗口桌面設(shè)計概念。如今已有許多成功案例,其中,VMware vSphere便是在這個領(lǐng)域中,發(fā)展相當(dāng)成功的虛擬化平臺。