NTNX>日記

個人的な趣味による Nutanix Community Edition 日記。Japanese のみですみません。

Nutanix CE で PowerShell Cmdlets v2.0 を試してみる。

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

 

実際には、下記のような感じで接続できるはずです。

f:id:gowatana:20220228223317p:plain

 

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.

 

以上。

©2021 gowatana
クリエイティブ・コモンズ・ライセンスこの 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。