2020年1月31日金曜日

VxRail を PowerShell で管理・操作する

※ このブログでは VxRail のことはあまり書いてなかったのですが、旧 EMC Community Network のブログスペースが近々閉鎖される様なので今後はこちらにも VxRail の事を書いていこうと思います。

今回は VxRail を PowerShell を利用して管理運用するツールをご紹介します。

vSphere 6.7 の HTML5 vSphere Client に対応した VxRail 4.7 以降、API での各種操作がバージョンを追うごとにサポートが増えている VxRail ですが、昨年末にリリースされた VxRail 4.7.300 (vSphere 6.7u3 対応) から、VxRail の PowerShell 用モジュールがリリースされました。※ PowerShell 5.0 以降の環境が必要です

パッケージの入手

パッケージは以下リンクから入手できます(要 DellEMC Support サイトのアカウント)

VxRail PowerShell Package
https://download.emc.com/downloads/DL96554_VxRail-PowerShell-Package.zip

モジュールのインポート

使い方はダウンロードしたパッケージに含まれる各モジュールフォルダを
C:\Program Files\WindowsPowerShell\Modules
に展開して、
Import-module VxRail.API
を PowerShell で打ち込むか、
フォルダに含まれる install.ps1 を実行するだけです。
※ 詳細は ダウンロードパッケージに含まれるユーザーガイド参照。

install.ps1 を実行した場合は、
$home\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
にモジュールインポートのためのスクリプトが追記され、PowerShell を起動するたびにvxrail-profile.ps1 が読み込まれるように設定されます。

VxRail PowerShell Package には以下の構成となります(vxrail-profile.ps1install.ps1  を実行すると作られます。)

VxRail PowerShell コマンドレットの中身

2019年12月時点のバージョン1には以下のモジュールがインストールされます。
PS C:\Users\Administrator> Import-module VxRail.API
PS C:\Users\Administrator> Get-Module

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   3.1.0.0    Microsoft.PowerShell.Management     {Add-Computer, Add-Content, Checkpoint-Computer, Clear-Con...
Manifest   3.1.0.0    Microsoft.PowerShell.Utility        {Add-Member, Add-Type, Clear-Variable, Compare-Object...}
Script     1.2        PSReadline                          {Get-PSReadlineKeyHandler, Get-PSReadlineOption, Remove-PS...
Manifest   1.0.0.0    VxRail.API
Manifest   1.0.0.0    VxRail.API.Certificate              Update-Certificate
Manifest   1.0.0.0    VxRail.API.Chassis                  Get-Chassis
Manifest   1.0.0.0    VxRail.API.Cluster                  {Get-Cluster, Remove-ClusterHost, Start-ClusterShutdown}
Manifest   1.0.0.0    VxRail.API.Common
Manifest   1.0.0.0    VxRail.API.Disk                     Get-Disks
Manifest   1.0.0.0    VxRail.API.Host                     {Get-Hosts, Get-iDRACNetwork, Get-iDRACUserIds, Get-iDRACU...
Manifest   1.0.0.0    VxRail.API.LCM                      Start-LcmUpgrade
Manifest   1.0.0.0    VxRail.API.Support                  {Add-SupportAccount, Get-SupportAccount, Get-SupportChatUR...
Manifest   1.0.0.0    VxRail.API.System                   {Add-SystemProxy, Confirm-SystemCredential, Get-CallHomeIn...
Manifest   1.0.0.0    VxRail.API.Telemetry                {Get-TelemetryTier, Set-TelemetryTier}
Manifest   1.0.0.0    VxRail.API.VC                       {Get-VCenterMode, Update-VCenterMode}


VxRail PowerShell Package には以下のコマンドレッドが含まれます。
各コマンドレットの詳細は名称から機能は推測できますので、詳しくは Get-Help を利用して確認できます。

PS C:\Users\Administrator> Get-Command -Module VxRail.API.*

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Function        Add-SupportAccount                                 1.0.0.0    VxRail.API.Support
Function        Add-SystemProxy                                    1.0.0.0    VxRail.API.System
Function        Confirm-SystemCredential                           1.0.0.0    VxRail.API.System
Function        Get-CallHomeInfo                                   1.0.0.0    VxRail.API.System
Function        Get-CallHomeMode                                   1.0.0.0    VxRail.API.System
Function        Get-Chassis                                        1.0.0.0    VxRail.API.Chassis
Function        Get-Cluster                                        1.0.0.0    VxRail.API.Cluster
Function        Get-Disks                                          1.0.0.0    VxRail.API.Disk
Function        Get-Hosts                                          1.0.0.0    VxRail.API.Host
Function        Get-iDRACNetwork                                   1.0.0.0    VxRail.API.Host
Function        Get-iDRACUserIds                                   1.0.0.0    VxRail.API.Host
Function        Get-iDRACUsers                                     1.0.0.0    VxRail.API.Host
Function        Get-Requests                                       1.0.0.0    VxRail.API.System
Function        Get-SupportAccount                                 1.0.0.0    VxRail.API.Support
Function        Get-SupportChatURL                                 1.0.0.0    VxRail.API.Support
Function        Get-SupportCommunity                               1.0.0.0    VxRail.API.Support
Function        Get-SupportCommunityMessages                       1.0.0.0    VxRail.API.Support
Function        Get-SupportContact                                 1.0.0.0    VxRail.API.Support
Function        Get-SupportHeartbeat                               1.0.0.0    VxRail.API.Support
Function        Get-SupportKB                                      1.0.0.0    VxRail.API.Support
Function        Get-SupportKbArticles                              1.0.0.0    VxRail.API.Support
Function        Get-SupportLogs                                    1.0.0.0    VxRail.API.Support
Function        Get-SupportServiceRequests                         1.0.0.0    VxRail.API.Support
Function        Get-SystemAvailableHosts                           1.0.0.0    VxRail.API.System
Function        Get-SystemClusterHosts                             1.0.0.0    VxRail.API.System
Function        Get-SystemHealth                                   1.0.0.0    VxRail.API.System
Function        Get-SystemInfo                                     1.0.0.0    VxRail.API.System
Function        Get-SystemInternetMode                             1.0.0.0    VxRail.API.System
Function        Get-SystemProxy                                    1.0.0.0    VxRail.API.System
Function        Get-TelemetryTier                                  1.0.0.0    VxRail.API.Telemetry
Function        Get-VCenterMode                                    1.0.0.0    VxRail.API.VC
Function        New-CallhomeAccessCode                             1.0.0.0    VxRail.API.System
Function        New-iDRACUser                                      1.0.0.0    VxRail.API.Host
Function        New-SupportLogs                                    1.0.0.0    VxRail.API.Support
Function        Publish-CallHomeServer                             1.0.0.0    VxRail.API.System
Function        Register-ExternalCallHomeServer                    1.0.0.0    VxRail.API.System
Function        Register-InternalCallHomeServer                    1.0.0.0    VxRail.API.System
Function        Remove-ClusterHost                                 1.0.0.0    VxRail.API.Cluster
Function        Remove-SupportAccount                              1.0.0.0    VxRail.API.Support
Function        Remove-SystemProxy                                 1.0.0.0    VxRail.API.System
Function        Save-SupportLogsById                               1.0.0.0    VxRail.API.Support
Function        Set-TelemetryTier                                  1.0.0.0    VxRail.API.Telemetry
Function        Start-ClusterShutdown                              1.0.0.0    VxRail.API.Cluster
Function        Start-HostsShutDown                                1.0.0.0    VxRail.API.Host
Function        Start-LcmUpgrade                                   1.0.0.0    VxRail.API.LCM
Function        Unregister-CallhomeServer                          1.0.0.0    VxRail.API.System
Function        Update-CallHomeMode                                1.0.0.0    VxRail.API.System
Function        Update-Certificate                                 1.0.0.0    VxRail.API.Certificate
Function        Update-iDRACNetwork                                1.0.0.0    VxRail.API.Host
Function        Update-iDRACUser                                   1.0.0.0    VxRail.API.Host
Function        Update-SupportAccount                              1.0.0.0    VxRail.API.Support
Function        Update-SystemCredential                            1.0.0.0    VxRail.API.System
Function        Update-SystemInternetMode                          1.0.0.0    VxRail.API.System
Function        Update-SystemProxy                                 1.0.0.0    VxRail.API.System
Function        Update-VCenterMode                                 1.0.0.0    VxRail.API.VC
ざっと見るだけでも情報取得系の Get-xxx 以外にも、設定更新のための Update-xxx、Set-xxx、New-xxx などが揃っています。

VxRail API を利用するための権限、ロール

VxRail PowerShell コマンドレッド を利用する際には、vCenter ではなく、VxRail Manager に接続して利用しますが、接続ユーザーは VxRail の操作に関する権限が付与されている必要があります。
VxRail 4.7.300 以降では、「VMware HCIA Management」 というロールに、
Manage VxRail Clusters」 と 「View VxRail Clusters」という権限が付与されています。
※ ロール管理で見ると以下のように確認できます。

VxRail PowerShell を利用するためのユーザーを新規で作成する場合は、「VMware HCIA Management」ロールを付与するか、新規ロールを作成するならば 「Manage VxRail Clusters」 と 「View VxRail Clusters」権限をロールに割り当てます。

以下では vxrailuser をいうアカウントを SSO ドメインに新規に作成し、「VMware HCIA Management」のロールを付与し、vCenter レベルの階層に割り当てています。


VxRail の API 操作に関する KB が以下にありますので、設定に不明な点があれば以下も参照ください。

VxRail PowerShell の実行

ここまで準備ができたら、あとはコマンドレットに VxRail Manager、ユーザー、パスワードをセットして実行するだけです。
例)

PS C:\Users\Administrator> Get-Chassis -Server [VxRail Manager FQDN or IP] -Username vxrailuser@vsphere.local -Password [PASSWORD]

VxRail 4.7.300 以降を利用されている環境では Get-xxx などの情報取得系のものは簡単に利用できますのでぜひお試し下さい。