NTNX>日記

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

Nutanix PowerShell Cmdlets v2.0 をコンテナにしてみる。

Nutanix PowerShell Cmdlets v2.0 を、Docker / Podman などで利用できるコンテナにしてみます。

今回の内容です。

今回の環境

Nutanix と Podman 環境は、下記投稿のものを利用しています。今回は Podman を利用していますが、Docker の場合はコマンドラインを podman → docker に変更すればそのまま実行できるはずです。

コンテナ イメージの作成

Dockerfile

今回は、下記のような Dockerfile を作成しました。

  • PowerShell Core 7.2.1
  • Nutanix.Cli 2.0.1
  • PowerShell のプロンプトを「pwsh-nutanix>」に変更
  • PowerShell(pwsh)起動時に Nutanix.Cli モジュールをインポート

gist.github.com

Podman でのビルド

podman でれば、下記のようにコンテナ イメージをビルドします。Docker の場合も、「docker build」で同じオプション指定でビルドできます。

[root@ol8-vm-01 ~]# podman build --tag pwsh-nutanix:v2.0.1 .

イメージが作成できました。

[root@ol8-vm-01 ~]# podman images
REPOSITORY                    TAG                      IMAGE ID      CREATED             SIZE
localhost/pwsh-nutanix        v2.0.1                   5daf7425c0b4  About a minute ago  635 MB
mcr.microsoft.com/powershell  7.2.1-centos-7-20220223  4a604f24b373  9 days ago          629 MB

 

コンテナの起動

作成したコンテナイメージから、コンテナを起動してみます。

対話モードでの実行

コンテナを起動すると、Nutanix.Cli が読み込まれた状態で PowerShell(pwsh)のコンソールが起動します。例では podman run で起動していますが、docker でも同様のオプションで起動できます。

[root@ol8-vm-01 ~]# podman run -it --rm pwsh-nutanix:v2.0.1
Welcome to Nutanix PowerShell Commands

.,,,,,,,.            ,#########.
  .,,,,,,,.        ,########.
    .,,,,,,,.    ,#######.
      .,,,,,,,.  ,#####.
        .,,,,,,,. ,##.
          .,,,,,,.
        .,,,,,,,. ,#.
      .,,,,,,,.  ,#####.
    .,,,,,,,.    ,#######.
  .,,,,,,,.        ,########.
.,,,,,,,.            ,#########.
pwsh-nutanix>

スクリプトの実行

あらかじめコンテナ ホスト側にスクリプトを用意しておき、それをコンテナ内部で実行してみます。

まず、scripts というディレクトリを作成してスクリプトを配置しておきます。

[root@ol8-vm-01 ~]# ls ./scripts/
get_poweron_vm_1.ps1  get_poweron_vm_2.ps1

今回は、下記のようなスクリプトを作成しておきます。

get_poweron_vm_1.ps1

gist.github.com

get_poweron_vm_2.ps1
※get_poweron_vm_1.ps1 の出力を Out-Null しただけです。

gist.github.com

 

下記のように「-v」オプションで、scripts ディレクトリをコンテナの /scripts にマウントします。

[root@ol8-vm-01 ~]# podman run -it --rm -v $(pwd)/scripts:/scripts:Z pwsh-nutanix:v2.0.1
Welcome to Nutanix PowerShell Commands

.,,,,,,,.            ,#########.
  .,,,,,,,.        ,########.
    .,,,,,,,.    ,#######.
      .,,,,,,,.  ,#####.
        .,,,,,,,. ,##.
          .,,,,,,.
        .,,,,,,,. ,#.
      .,,,,,,,.  ,#####.
    .,,,,,,,.    ,#######.
  .,,,,,,,.        ,########.
.,,,,,,,.            ,#########.
pwsh-nutanix> 
pwsh-nutanix> df -h /scripts
Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/ol-root   17G  3.0G   15G  18% /scripts
pwsh-nutanix> ls /scripts
get_poweron_vm_1.ps1  get_poweron_vm_2.ps1

これで、コンテナ ホスト OS 側のスクリプトを、コンテナ内部で実行できるようになります。

pwsh-nutanix> ./scripts/get_poweron_vm_1.ps1

Server                : lab-nxpc-01.go-lab.jp
Version               : pc.2020.09.16
UserName              : admin
AcceptInvalidSSLCerts : True
ForcedConnection      : False

vmName     : NTNX-624676c4-A-CVM
pcHostName : lab-nxpc-01.go-lab.jp

vmName     : lab-nxpc-01
pcHostName : lab-nxpc-01.go-lab.jp

vmName     : ol8-vm-01
pcHostName : lab-nxpc-01.go-lab.jp

下記のように、コンテナ起動と同時に実行することもできます。

この場合は pwsh 起動時に Nutanix.Cli が読み込まれないので、Import-Module Nutanix.Cli をスクリプトの冒頭に記載してあります。

[root@ol8-vm-01 ~]# podman run -it --rm -v $(pwd)/scripts:/scripts:Z pwsh-nutanix:v2.0.1 pwsh -c ./scripts/get_poweron_vm_1.ps1
Welcome to Nutanix PowerShell Commands

.,,,,,,,.            ,#########.
  .,,,,,,,.        ,########.
    .,,,,,,,.    ,#######.
      .,,,,,,,.  ,#####.
        .,,,,,,,. ,##.
          .,,,,,,.
        .,,,,,,,. ,#.
      .,,,,,,,.  ,#####.
    .,,,,,,,.    ,#######.
  .,,,,,,,.        ,########.
.,,,,,,,.            ,#########.

Server                : lab-nxpc-01.go-lab.jp
Version               : pc.2020.09.16
UserName              : admin
AcceptInvalidSSLCerts : True
ForcedConnection      : False

vmName     : NTNX-624676c4-A-CVM
pcHostName : lab-nxpc-01.go-lab.jp

vmName     : lab-nxpc-01
pcHostName : lab-nxpc-01.go-lab.jp

vmName     : ol8-vm-01
pcHostName : lab-nxpc-01.go-lab.jp


[root@ol8-vm-01 ~]#

モジュールのインポートや Prism Central 接続時の出力は、Out-Null などで抑止できます。

[root@ol8-vm-01 ~]# podman run -it --rm -v $(pwd)/scripts:/scripts:Z pwsh-nutanix:v2.0.1 pwsh -c ./scripts/get_poweron_vm_2.ps1

vmName              pcHostName
------              ----------
NTNX-624676c4-A-CVM lab-nxpc-01.go-lab.jp
lab-nxpc-01         lab-nxpc-01.go-lab.jp
ol8-vm-01           lab-nxpc-01.go-lab.jp

[root@ol8-vm-01 ~]#

(おまけ)Docker Hub から実行

Docker Hub でもこのコンテナ イメージをビルドしてみました。

イメージ名を下記のように指定するとダウンロードできるはずです。

  • gowatana/pwsh-nutanix
  • gowatana/pwsh-nutanix:v2.0.1
[root@ol8-vm-01 ~]# podman run -it --rm gowatana/pwsh-nutanix
Welcome to Nutanix PowerShell Commands

.,,,,,,,.            ,#########.
  .,,,,,,,.        ,########.
    .,,,,,,,.    ,#######.
      .,,,,,,,.  ,#####.
        .,,,,,,,. ,##.
          .,,,,,,.
        .,,,,,,,. ,#.
      .,,,,,,,.  ,#####.
    .,,,,,,,.    ,#######.
  .,,,,,,,.        ,########.
.,,,,,,,.            ,#########.
pwsh-nutanix>

以上。

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