在擁有多台主機的環境中,與從 vSphere Client 管理主機相比,使用指令碼管理主機更快速,產生的錯誤也更少。

vSphere 包含用於主機管理的多個指令碼語言。如需參考資訊和程式設計提示,請參閱 ESXCLI 說明文件vSphere API/SDK 說明文件;如需有關指令碼式管理的其他提示,請參閱 VMware 社群。《vSphere 管理員》說明文件重點介紹如何使用 vSphere Client 進行管理。
VMware PowerCLI

VMware PowerCLI 是 vSphere API 的 Windows PowerShell 介面。VMware PowerCLI 包含用於管理 vSphere 元件的 PowerShell cmdlet。

VMware PowerCLI 包含數百個 cmdlet、一組範例指令碼和用於管理和自動化的函數程式庫。請參閱https://developer.vmware.com/powercli

ESXCLI
ESXCLI 包含用於管理 ESXi 主機和虛擬機器的命令集。請參閱 ESXCLI 說明文件

您也可以使用 vSphere Automation SDK 的其中一個指令碼介面,如 vSphere Automation SDK for Python。

程序

  1. 建立擁有限制權限的自訂角色。
    例如,考慮建立具有一組管理主機的權限,但沒有管理虛擬機器、儲存區或網路的權限的角色。如果只想使用指令碼來擷取資訊,則可以建立擁有主機的唯讀權限的角色。
  2. vSphere Client,建立服務帳戶,並為其指派自訂角色。
    如果想要使對特定主機的存取權受到適當限制,則可以建立擁有不同層級存取權的多個自訂角色。
  3. 撰寫用於執行參數檢查或修改的指令碼,並執行這些指令碼。
    例如,您可以按照如下方式檢查或設定主機的殼層互動式逾時:
    語言 命令
    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 }
    
  4. 在大型環境中,建立擁有不同存取權限的角色,並根據要執行的工作將主機分組到資料夾中。然後從不同的服務帳戶針對不同的資料夾執行指令碼。
  5. 確認執行命令後的變更是所需變更。