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

執行這項作業的原因和時機

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

vSphere PowerCLI

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

vSphere PowerCLI 包含用於管理和自動化的 200 多個 cmdlet、範例指令碼集和函數程式庫。請參閱《vSphere PowerCLI 說明文件》

vSphere Command-Line Interface (vCLI)

vCLI 包含用於管理 ESXi 主機和虛擬機器的命令集。該安裝程式執行 Windows 或 Linux 系統以及安裝 ESXCLI 命令、vicfg- 命令和一組其他 vCLI 命令,它也可安裝 vSphere SDK for Perl。請參閱《vSphere Command-Line Interface 說明文件》

自 vSphere 6.0 起,您可以使用 vCloud Suite SDK 的其中一個指令碼介面,如 vCloud Suite SDK for Python。

程序

  1. 建立擁有限制權限的自訂角色。

    例如,考慮建立具有一組管理主機的權限,但沒有管理虛擬機器、儲存區或網路的權限的角色。如果只想使用指令碼來擷取資訊,則可以建立擁有主機的唯讀權限的角色。

  2. vSphere Web Client,建立服務帳戶,並為其指派自訂角色。

    如果想要使對特定主機的存取權受到適當限制,則可以建立擁有不同層級存取權的多個自訂角色。

  3. 撰寫用於執行參數檢查或修改的指令碼,並執行這些指令碼。

    例如,您可以按照如下方式檢查或設定主機的殼層互動式逾時:

    語言

    命令

    vCLI (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. 確認執行命令後的變更是所需變更。