2014/05/20

PowerCLI: 無償利用のESXiでWrite操作を実行する

ESXiは、無償・無料で利用できるライセンスがあるが、PowerCLIでこのライセンスを導入したESXiに接続すると、システムの動作を変更する操作(write operation、write操作)を実行することができない。例えば、仮想ホストをメンテナンスモードに移行しようとすると、エラーになる。

実際に実行して試してみる。まず、仮想ホストesxi01に接続する。
PowerCLI vis:¥> Connect-VIServer -Server esxi01 -User 管理者ユーザ名 -Password '管理者パスワード'

Name                           Port  User
----                           ----  ----
esxi01                         443   管理者ユーザ名


PowerCLI vis:¥>

現在の状態をGet-VMHostコマンドレットを使って確認する。
PowerCLI vis:¥> Get-VMHost

Name                 ConnectionState PowerState NumCpu CpuUsageMhz CpuTotalMhz   MemoryUsageGB   MemoryTotalGB Version
----                 --------------- ---------- ------ ----------- -----------   -------------   ------------- -------
esxi01               Connected       PoweredOn       2          78        4266           1.293          11.999   5.5.0


PowerCLI vis:¥>
「ConnectionState」が「Connected」即ち、接続中であることが判る。

状態の変更には、Set-VMHostコマンドレットを使う。
PowerCLI vis:¥> Set-VMHost -State Maintenance
Set-VMHost : 2014/05/20 17:41:52    Set-VMHost        Current license or ESXi version prohibits execution of the requested operation.
発生場所 行:1 文字:1
+ Set-VMHost -State Maintenance
+ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
    + CategoryInfo          : NotSpecified: (:) [Set-VMHost], RestrictedVersion
    + FullyQualifiedErrorId : Client20_ComputeResourceServiceImpl_VmHostEnterMaintenaceMode_ViError,VMware.VimAutomation.ViCore.
   Cmdlets.Commands.SetVMHost

PowerCLI vis:¥>
ライセンスの問題で、要求した操作を実行できない。


これは、EsxCliを使うことによって回避することができる。
まず、Get-EsxCliコマンドレットにより、EsxCliオブジェクトを取得する。
PowerCLI vis:¥> $esxcli = Get-EsxCli
PowerCLI vis:¥> 

メンテナンスモードの操作は、以下の様に操作を確認することができる。
PowerCLI vis:¥> $esxcli.system.maintenanceMode

==============================
EsxCliElement: maintenanceMode

   Methods:
   --------
   string get()
   boolean set(boolean enable, long timeout)



PowerCLI vis:¥>
二つのメソッドgetおよびsetを利用できることが判る。

メソッドgetによりメンテナンスモードの状態を確認する。
PowerCLI vis:¥> $esxcli.system.maintenanceMode.get()
Disabled
PowerCLI vis:¥>
現在、メンテナンスモードが無効(disabled)であることが判る。

状態を変更する。メソッドsetを使う。第一引数に真($True)、第二引数にタイムアウトまでの秒数(ここでは300秒)を与える。
PowerCLI vis:¥> $esxcli.system.maintenanceMode.set($True,300)
true
PowerCLI vis:¥>

状態を確認する。
PowerCLI vis:¥> $esxcli.system.maintenanceMode.get()
Enabled
PowerCLI vis:¥> Get-VMHost

Name                 ConnectionState PowerState NumCpu CpuUsageMhz CpuTotalMhz   MemoryUsageGB   MemoryTotalGB Version
----                 --------------- ---------- ------ ----------- -----------   -------------   ------------- -------
esxi01               Maintenance     PoweredOn       2         145        4266           1.298          11.999   5.5.0


PowerCLI vis:¥> 
メンテナンスモードになっていることが判る。

メンテナンスモードを解除する。
PowerCLI vis:¥> $esxcli.system.maintenanceMode.set($False,300)
true
PowerCLI vis:¥>

状態を確認する。
PowerCLI vis:¥> $esxcli.system.maintenanceMode.get()
Disabled
PowerCLI vis:¥> Get-VMHost

Name                 ConnectionState PowerState NumCpu CpuUsageMhz CpuTotalMhz   MemoryUsageGB   MemoryTotalGB Version
----                 --------------- ---------- ------ ----------- -----------   -------------   ------------- -------
esxi01               Connected       PoweredOn       2         172        4266           1.304          11.999   5.5.0


PowerCLI vis:¥>

0 件のコメント: