在擁有多台 ESXi 主機的環境中,與從 vSphere Client 管理主機相比,使用指令碼管理主機更快速,產生的錯誤也更少。
vSphere 包括用於 ESXi 主機管理的指令碼語言。VMware PowerCLI 是 vSphere API 的 Windows PowerShell 介面,包含用於管理 vSphere 元件的 PowerShell cmdlet。ESXCLI 包含用於管理 ESXi 主機和虛擬機器的命令集。如需參考資訊和程式設計提示,請參閱 https://developer.vmware.com。《vSphere 管理員》說明文件重點介紹如何使用 vSphere Client 進行管理。
您也可以使用 vSphere Automation SDK 的其中一個指令碼介面,如 vSphere Automation SDK for Python。
程序
- 建立擁有限制權限的自訂角色。
例如,考慮建立具有一組管理主機的權限,但沒有管理虛擬機器、儲存區或網路的權限的角色。如果只想使用指令碼來擷取資訊,則可以建立擁有主機的唯讀權限的角色。
- 從 vSphere Client,建立服務帳戶,並為其指派自訂角色。
如果想要使對特定主機的存取權受到適當限制,則可以建立擁有不同層級存取權的多個自訂角色。
- 撰寫用於執行參數檢查或修改的指令碼,並執行這些指令碼。
例如,您可以按照如下方式檢查或設定主機的殼層互動式逾時:
語言 |
命令 |
ESXCLI |
esxcli <conn_options> system settings advanced get /UserVars/ESXiShellTimeOut esxcli --formatter=csv --format-param=fields="Path,Int Value"
system settings advanced list | grep /UserVars/ESXiShellTimeOut |
PowerCLI |
#List UserVars.ESXiShellInteractiveTimeOut for each host
Get-VMHost | Select Name,
@{N="UserVars.ESXiShellInteractiveTimeOut";E={$_
| Get-AdvancedSetting -Name UserVars.ESXiShellInteractiveTimeOut
| Select -ExpandProperty Value}}
# Set UserVars.ESXiShellTimeOut to 900 on all hosts
Get-VMHost
| Foreach { Get-AdvancedSetting -Entity $_ -Name UserVars.ESXiShellInteractiveTimeOut | Set-AdvancedSetting -Value 900 }
|
- 在大型環境中,建立擁有不同存取權限的角色,並根據要執行的工作將主機分組到資料夾中。然後從不同的服務帳戶針對不同的資料夾執行指令碼。
- 確認執行命令後的變更是所需變更。