多くの 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 for Python などの vSphere Automation SDK に対するスクリプト インターフェイスの 1 つを使用することもできます。

手順

  1. 権限に制限のあるカスタム ロールを作成します。
    vCenter Server カスタム ロールの作成を参照してください。
    たとえば、ホストを管理するための権限セットを持ち、仮想マシン、ストレージ、またはネットワークを管理するための権限は持たないロールを作成することを検討します。使用するスクリプトで情報を抽出するだけの場合は、ホストに対して読み取り専用権限を持つロールを作成できます。
  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. コマンドを実行した結果を確認します。