PowerCLI是VMware開發的基於微軟(MSFT)的PowerShell的命令行管理vSphere的實現,因此在批量化操作方面CLI會減輕很多GUI環境下的繁瑣重復勞作。
現有場景中有大量的物理主機已經安裝好的ESXi,並且可以被vCenter所管理,由於默認情況下可供管理的那個Manage管理網卡是不開啟vMotion的,因此我們需要借用這個Manage管理網卡來開啟vMotion功能,從而實現集群內的HA功能。
說明:一般情況下,VMware建議,條件允許的情況下每個網卡的功能最好能獨立且分開,有專門跑iSCSI的網卡,有專門組建業務網絡的業務網卡,有專門用來節點管理的Manage網卡,有專門用來實現高可用HA和遷移vMotion的網卡。
通過官方文檔,我們很容易找到命令行開啟vMotion的方法(link:https://www.vmware.com/support/developer/PowerCLI/PowerCLI41U1/html/Set-VMHostNetworkAdapter.html ):
Get-VMHost Host | Get-VMHostNetworkAdapter -VMKernel | Set-VMHostNetworkAdapter -VMotionEnabled $true
該命令可以實現對Get-VMHost到的所有Host主機下的具有VMkernel的網卡進行vMotion的開啟
現有場景需要對特定的HOST進行操作,因此語句我們需要更改一下:
Connect-VIServer –Server 172.5.140.201
get-vmhost -name 172.5.140.160 | Get-VMHostNetworkAdapter -VMKernel | Set-VMHostNetworkAdapter -VMotionEnabled $true
該組合實現登陸一個vCenter服務器172.5.140.201 之后,對該管轄范圍內的172.5.140.160主機單獨進行vMotion的開啟
這個場景中有大量的新加入主機需要這般操作,因此我們需要准備一個包含這些主機IP文件列表我命名為“hosts.txt”文件,因此我們對語句進行了一些修改:
Connect-VIServer –Server 172.5.140.201
Get-Content hosts.txt | Foreach-Object {get-vmhost -name $_ | Get-VMHostNetworkAdapter -VMKernel | Set-VMHostNetworkAdapter -VMotionEnabled $true}
該組合實現登陸到vCenter之后,在這個hosts.txt內逐行尋找匹配項,通過PowerShell的Foreach-Object 進行自動填入“$_”關鍵信息,完成批量自動化開啟vMotion
Figure 1需要進一步確認的對話環節
這種輸出結果我們會有多次的確認,如vCenter的SSL信息的警告內容顯示、VMKernel的多個確認,這里都需要按下更多次的回車才能完成。
因此我們想讓屏幕輸出更簡潔,對語句做了如下修改:
Connect-VIServer –Server 172.5.140.201 -WarningAction 0
Get-Content hosts.txt | Foreach-Object {get-vmhost -name $_ | Get-VMHostNetworkAdapter -VMKernel -name vmk0 | Set-VMHostNetworkAdapter -VMotionEnabled $true -Confirm:$false}
該組合實現了忽略SSL信息警告內容,只在vmk0上開啟vMotion,並且忽略確認 是的返回結果更加清爽
注意:這里需要注意一下,如果您的配置環境不是將vmk0上開啟vMotion的話,請使用Get-VMHostNetworkAdapter -VMKernel命令獲取當前所連接的vCenter內的所有ESXi主機上的VMKernel信息。
-=EOB=-