多くのホストが存在する環境では、スクリプトを使用してホストを管理した方が、vSphere Client からホストを管理するよりも迅速に作業することができ、エラーが発生する確率も低くなります。

vSphere には、ホスト管理用のスクリプト言語がいくつか組み込まれています。リファレンス情報およびプログラミングのヒントについては、『 ESXCLI のドキュメント』および『 vSphere API/SDK のドキュメント』を参照してください。また、スクリプトによる管理のその他のヒントについては VMware コミュニティを参照してください。vSphere 管理者のドキュメントでは、管理のために vSphere Client を使用する方法について主に説明されています。
VMware PowerCLI

VMware PowerCLI は、vSphere API への Windows PowerShell インターフェイスです。VMware PowerCLI には、vSphere コンポーネントを管理するための PowerShell コマンドレットが含まれています。

VMware PowerCLI には、数百の cmdlet、サンプル スクリプトのセット、管理および自動化のための関数ライブラリがあります。https://developer.vmware.com/powercliを参照してください。

ESXCLI
ESXCLI には、 ESXi ホストおよび仮想マシンを管理するためのコマンドのセットが組み込まれています。『 ESXCLI のドキュメント』を参照してください。

vSphere Automation SDK for Python などの vSphere Automation SDK に対するスクリプト インターフェイスの 1 つを使用することもできます。

手順

  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. コマンドを実行した結果を確認します。