vSphere 7.0u1 から DRS などのクラスタ制御機能が vCenter から vCLS (vSphere Cluster Services) に移管され、vCLS そのものの有効化・無効化 (Retreat Mode) の操作方法を昨年以下の記事にまとめました。
今回はクラスタの計画停止や UPS などのシャットダウンツールの連動などで vCLS Retreat Mode の切り替えを PowerCLI でスクリプトを組むための方法をまとめます。
※ 作業前に必ず KB も併せて確認して下さい。
PowerCLI でクラスタの Domain ID を確認する
まずは vCenter に接続。この後 AdvancedSetting の設定で使うので $vc に入れておきます。
1 2 3 |
$cre = Get-Credential
$vc = Connect-VIServer -Server "vCenter IP or FQDN" -Credential $cre
|
続いて Get-Cluster でクラスタの情報を取得してみます。
1 2 3 4 5 6 7 8 |
PS C:\> Get-Cluster | Format-Table -AutoSize
Name HAEnabled HAFailoverLevel DrsEnabled DrsAutomationLevel
---- --------- --------------- ---------- ------------------
vSAN True 1 True FullyAutomated
Nested-CL False 1 False FullyAutomated
PCL False 1 True Manual
|
デフォルトの出力だと Domain ID が分からないので、Select-Object で "ID" を含めるか、ExtensionData の管理対象オブジェクト (MoRef) を確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
PS C:\> Get-Cluster | Select-Object Name,Id |Format -Table -AutoSize
Name Id
---- --
vSAN ClusterComputeResource-domain-c3012
Nested-CL ClusterComputeResource-domain-c3006
PCL ClusterComputeResource-domain-c8
PS C:\> ( Get-Cluster -name "PCL" ).ExtensionData.MoRef.Value
domain-c8
PS C:\> ( Get-Cluster -name "vSAN" ).ExtensionData.MoRef.Value
domain-c3012
PS C:\> ( Get-Cluster -name "Nested-CL" ).ExtensionData.MoRef.Value
domain-c3006
|
Cluster ID は "ClusterComputeResource-domain-cXXXX" となり、URL に含まれる Domain ID と同じものを確認できます。
クラスタを指定して管理対象オブジェクト (MoRef) を確認した場合はすぐわかります。
vCLS Retreat Mode に関する詳細設定を PowerCLI で作成・制御する
前回は vSphere Client で追加した "
config.vcls.clusters.domain-cXXXX.enabled" を PowerCLI で操作します。
現在の vCLS Retreat Mode に関連する詳細設定(Advanced Settings)の有無を確認します。
1 2 3 4 5 6 7 |
PS C:\> Get-AdvancedSetting -Entity $vc -Name config.vcls.clusters.* | Format-Table -AutoSize
Name Value Type Description
---- ----- ---- -----------
config.vcls.clusters.domain-c8.enabled false VIServer
config.vcls.clusters.domain-c3006.enabled false VIServer
|
先ほど新規で作成した "vSAN" クラスタの ID は未作成なので、これを新規に New-AdvancedSetting で追加します(削除は vCSA 内の vpxd.cfg を修正する必要があるので値が正しい事を必ずチェックしてください)。"vSAN" クラスタの Domain ID は "domain-c3012" なので "config.vcls.clusters.domain-c3012.enabled" を追加します。
1 2 |
PS C:\> New-AdvancedSetting -Entity $vc -Name config.vcls.clusters.domain-c3012.enabled -Value false
|
Retreat Mode の On/Off は Set-AdvancedSetting から true / false で制御します。
- true なら Retreat Mode が無効 (vCLS が 有効 : vCLS VM が作成される)
- false なら Retreat Mode が有効 (vCLS が無効 : vCLS VM が削除される)
1 2 3 4 5 6 |
PS C:\> Get-AdvancedSetting -Entity $vc -Name config.vcls.clusters.domain-c3012.enabled | Set-AdvancedSetting -Value true
PS C:\> Get-AdvancedSetting -Entity $vc -Name config.vcls.clusters.domain-c3012.enabled | Set-AdvancedSetting -Value false
|
有効・無効が正しく反映されている事を確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
PS C:\> Get-AdvancedSetting -Entity $vc -Name config.vcls.clusters.* | Format-Table -AutoSize
Name Value Type Description
---- ----- ---- -----------
config.vcls.clusters.domain-c8.enabled false VIServer
config.vcls.clusters.domain-c3012.enabled false VIServer
config.vcls.clusters.domain-c3006.enabled false VIServer
PS C:\> Get-AdvancedSetting -Entity $vc -Name config.vcls.clusters.domain-c3012.enabled | Set-AdvancedSetting -Value true
PS C:\> Get-AdvancedSetting -Entity $vc -Name config.vcls.clusters.* | Format-Table -AutoSize
Name Value Type Description
---- ----- ---- -----------
config.vcls.clusters.domain-c8.enabled false VIServer
config.vcls.clusters.domain-c3012.enabled true VIServer ← true に変更される
config.vcls.clusters.domain-c3006.enabled false VIServer
|
vCenter の詳細設定の操作は間違えるとシステムに大きな影響を与えるため慎重に行ってください。
以上、PowerCLI を利用して vCLS Retreat Mode を起動停止してみました。