多くのホストが存在する環境では、スクリプトを使用してホストを管理した方が、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 コマンドレットが含まれています。

vSphere PowerCLI には、200 以上の cmdlet、サンプル スクリプトのセット、管理および自動化のための関数ライブラリがあります。『vSphere PowerCLI のドキュメント』を参照してください。

vSphere Command-Line Interface (vCLI)
vCLI には、 ESXi ホストおよび仮想マシンを管理するためのコマンドのセットが組み込まれています。インストーラは、vSphere SDK for Perl もインストールし、Windows または Linux システムを実行して、ESXCLI コマンド、 vicfg- コマンド、およびその他の vCLI コマンドのセットをインストールします。『 vSphere Command-Line Interface のドキュメント』を参照してください。

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

手順

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