Nutanix AOS 6.0 がリリースされた頃に、Nutanix Cmdlets v2.0 がリリースされました。
しかし、現状の Nutanix CE では Prism Central のバージョンが古いため、Prism Central の Web UI からインストーラがダウンロードできません。
そこで、PowerShell Gallery から直接インストールして使用してみます。
今回の内容です。
今回の環境
Nutanix CE
今回利用する Nutanix CE は下記です。
- Nutanix CE 2020.09.16
- Prism Central pc.2020.09.16
PowerShell 実行環境について
Nutanix PowerShell Cmdlets v2.0
Nutanix PowerShell Cmdlets v2.0 は、下記からダウンロードできます。パッケージの名前は Nutanix.Cli で、現在は v2.0.1 がリリースされています。
PowerShell v7
Nutanix.Cli には、Get-Cluster や Get-VM といったコマンドレットが含まれており、VMware PowerCLI をインストールしてある環境だと、同名コマンドレットがいくつか衝突してしまいます。そこで今回は、Linux 上の PowerShell コンテナで実行します。
下記のあたりから、PowerShell コンテナ イメージの一覧が確認できます。
今回は下記のコンテナ イメージを利用します。
- mcr.microsoft.com/powershell:7.2.1-centos-7-20220223
PowerShell の実行ホスト OS
コンテナ ホストは、Oracle Linux 8 です。
[root@ol8-vm-01 ~]# cat /etc/oracle-release Oracle Linux Server release 8.5 [root@ol8-vm-01 ~]# uname -r 5.4.17-2136.301.1.3.el8uek.x86_64
PowerShell 実行環境の準備
まず、コンテナを起動するために podman をインストールします。
[root@ol8-vm-01 ~]# dnf install -y podman
podman のサービスを起動します。
[root@ol8-vm-01 ~]# systemctl start podman [root@ol8-vm-01 ~]# systemctl enable podman
今回の podman のバージョンです。
[root@ol8-vm-01 ~]# podman version Version: 3.4.2 API Version: 3.4.2 Go Version: go1.16.12 Built: Sat Feb 5 09:02:55 2022 OS/Arch: linux/amd64
podman pull で、コンテナ イメージをダウンロードしておきます。
[root@ol8-vm-01 ~]# podman pull mcr.microsoft.com/powershell:7.2.1-centos-7-20220223
podman run でコンテナを起動すると、そのまま PowerShell が起動します。
[root@ol8-vm-01 ~]# podman run -it --rm mcr.microsoft.com/powershell:7.2.1-centos-7-20220223 PowerShell 7.2.1 Copyright (c) Microsoft Corporation. https://aka.ms/powershell Type 'help' to get help. PS />
Nutanix.Cli のインストール
PowerShell Gallery から、Nutanix.Cli をインストールします。
PS /> Set-PSRepository -Name PSGallery -InstallationPolicy Trusted PS /> Install-Module -Name Nutanix.Cli
インストールされた Nutanix 関連モジュール(Nutanix.*)を確認しておきます。
PS /> Get-Module -ListAvailable Nutanix.* | select Name,Version Name Version ---- ------- Nutanix.Cli 2.0.1 Nutanix.Prism.Common 2.0.1 Nutanix.Prism.PS.Cmds 2.0.1
コマンドレットの一覧を確認しておきます。
Cmdlets v1 と比較すると、だいぶ少なくなっています。また、NTNX のようなプレフィクスがないため PowerCLI などとコマンドレットの名前が衝突します。
PS /> gcm -Module Nutanix.* | Sort-Object Module,Noun,Verb | select Name,Module Name Module ---- ------ New-NutanixObject Nutanix.Prism.Common Connect-PrismCentral Nutanix.Prism.Common Disconnect-PrismCentral Nutanix.Prism.Common Get-Cluster Nutanix.Prism.PS.Cmds Get-Image Nutanix.Prism.PS.Cmds New-Image Nutanix.Prism.PS.Cmds Remove-Image Nutanix.Prism.PS.Cmds Set-Image Nutanix.Prism.PS.Cmds Get-Metric Nutanix.Prism.PS.Cmds Get-Network Nutanix.Prism.PS.Cmds Get-StorageContainer Nutanix.Prism.PS.Cmds Get-Task Nutanix.Prism.PS.Cmds Wait-Task Nutanix.Prism.PS.Cmds Get-VM Nutanix.Prism.PS.Cmds New-VM Nutanix.Prism.PS.Cmds Remove-VM Nutanix.Prism.PS.Cmds Set-VM Nutanix.Prism.PS.Cmds Start-VM Nutanix.Prism.PS.Cmds Stop-VM Nutanix.Prism.PS.Cmds PS /> gcm -Module Nutanix.* | Group Noun | select Name,{$_.Group.Verb -join ","} Name $_.Group.Verb -join "," ---- ----------------------- Cluster Get Image Get,New,Remove,Set Metric Get Network Get NutanixObject New PrismCentral Connect,Disconnect StorageContainer Get Task Get,Wait VM Get,New,Remove,Set,Start,Stop
コマンドレットの実行
Nutanix 環境に接続するためのコマンドレットとして、Connect-PrismCentral が用意されています。Prism Central に接続して、VM の情報を取得してみます。
Nutanix.Cli モジュールの読み込み
最初に、必ず「Import-Module Nutanix.Cli」で Nutanix.Cli モジュールを読み込んでおきます。
PS /> Import-Module Nutanix.Cli Welcome to Nutanix PowerShell Commands .,,,,,,,. ,#########. .,,,,,,,. ,########. .,,,,,,,. ,#######. .,,,,,,,. ,#####. .,,,,,,,. ,##. .,,,,,,. .,,,,,,,. ,#. .,,,,,,,. ,#####. .,,,,,,,. ,#######. .,,,,,,,. ,########. .,,,,,,,. ,#########. PS />
これで、Nutanix.Prism.Common と Nutanix.Prism.PS.Cmds も読み込まれます。
PS /> Get-Module | select Name,Version Name Version ---- ------- Microsoft.PowerShell.Management 7.0.0.0 Microsoft.PowerShell.Utility 7.0.0.0 Nutanix.Cli 2.0.1 Nutanix.Prism.Common 2.0.1 Nutanix.Prism.PS.Cmds 2.0.1 PSReadLine 2.1.0
Prism Central への接続などを実施する前にこれらのモジュールを読み込んでおかないと、どのコマンドレットを実行しても下記のように「Object reference not set to an instance of an object.」といったエラーになってしまいます。この場合は、exit で PowerShellを抜けて(pwsh を起動しなおして)、Import-Module Nutanix.Cli から実行したほうがよいかもしれません。
PS /> Get-VM Get-VM: Object reference not set to an instance of an object.
Prism Central への接続
Nutanix.Cli で、Prism Central に接続してみます。「lab-nxpc-01.go-lab.jp」は、自宅の Prism Central のアドレスです。ここでは、admin ユーザでログインしています。
PS /> Connect-PrismCentral -Server lab-nxpc-01.go-lab.jp -AcceptInvalidSSLCerts
実際には、下記のような感じで接続できるはずです。
Nutanix Cmdlets v2.0 での情報取得
Nutanix クラスタの情報を取得してみます。
PS /> Get-Cluster State : COMPLETE ClusterName : lab-nxce-01 UUID : 0005bcc8-1ddc-c8ba-37dd-1c697a630d37 PC_Name : Unnamed PC_UUID : 211b10a1-5651-4532-b5e7-9b4200af2caf PC_Host : lab-nxpc-01.go-lab.jp
パワーオンされている VM の情報を取得してみます。
PS /> Get-VM -PowerState ON | select vmName,pcHostName vmName pcHostName ------ ---------- NTNX-624676c4-A-CVM lab-nxpc-01.go-lab.jp ol8-vm-01 lab-nxpc-01.go-lab.jp rhel8-01 lab-nxpc-01.go-lab.jp lab-nxpc-01 lab-nxpc-01.go-lab.jp PS />
Prism Central からの切断
Prism Central から切断しておきます。
PS /> Disconnect-PrismCentral lab-nxpc-01.go-lab.jp
これで、Get-VM で情報取得できなくなりました。
PS /> Get-VM Get-VM: Not connected to any Prism Central. Please connect to Prism Central host and try again.
以上。