NTNX>日記

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

Nutanix Files の Quota Policy を ncli で作成してみる。(続編)

Nutanix Files の SMB 共有フォルダに、ncli で Quota Policy を作成してみます。

前回、普通に CVM に SSH ログインして作成する方法を紹介しました。

今回は、もう少し工夫して ncli を利用します。

今回の内容です。

 

リモート ホストからの ncli 実行(SSH)

ncli を CVM に直接ログインして実行すると、CVM にはあまりソフトウェアがインストールされていないため、不便なことがあります。そこで、運用端末などのリモートホストから SSH で ncli を実行し、その結果をリモートホスト側のコマンド ライン ツールで処理してみます。

SSH を実行する際に都度パスワード入力をしなくて済むように、リモート ホストでは下記のような準備しておきます。

 

「ncli fs list」で、ファイル サーバーの情報を取得してみます。

  • lab-nxce-01.go-lab.jp は、Prism Cluster VIP のホスト名です。
  • Prism の VIP は別ノードに移動することがあるので、ホスト鍵チェックのエラー回避のため「-o StrictHostKeyChecking=false」を指定しています。
  • ncli は、フルパスで指定(/home/nutanix/prism/cli/ncli)します。
  • まずは実行できたことだけ確認したいので、先頭の 5行だけ取得(head -5)してみます。
[gowatana@infra-jbox-01 ~]$ ssh -o StrictHostKeyChecking=false nutanix@lab-nxce-01.go-lab.jp /home/nutanix/prism/cli/ncli fs list | head -5
Warning: the ECDSA host key for 'lab-nxce-01.go-lab.jp' differs from the key for the IP address '192.168.20.50'
Offending key for IP in /home/gowatana/.ssh/known_hosts:119
Matching host key in /home/gowatana/.ssh/known_hosts:351
Nutanix Controller VM

    Uuid                      : 0a1bef2b-099c-4f52-9c89-eac01bd204bb
    Name                      : test-fs-01
    DNS Domain Name           : ntnx.lab
    Version                   : 3.8.1.1

 

SSH 接続の警告メッセージは、標準エラー出力の表示を抑止(2 > /dev/null)することで非表示にもできます。今回は例を見やすくするため非表示にしていますが、何かあった時に分かりやすいように、そのままの方がよい気もします。

[gowatana@infra-jbox-01 ~]$ ssh -o StrictHostKeyChecking=false nutanix@lab-nxce-01.go-lab.jp /home/nutanix/prism/cli/ncli fs list 2> /dev/null | head -5

    Uuid                      : 0a1bef2b-099c-4f52-9c89-eac01bd204bb
    Name                      : test-fs-01
    DNS Domain Name           : ntnx.lab
    Version                   : 3.8.1.1

 

リモート ホスト側コマンドの活用

前回の投稿と同様に、「ncli fs list」でのファイル サーバー UUID の確認を、リモート ホストから実行してみます。

パイプで続けている grep、cut、tr コマンドは、SSH を実行したローカル ホスト側のものです。実際に実行してみると、最後にファイル サーバー UUID が表示されています。

[gowatana@infra-jbox-01 ~]$ ssh -o StrictHostKeyChecking=false nutanix@lab-nxce-01.go-lab.jp /home/nutanix/prism/cli/ncli fs list filter-criteria=Name search-string=test-fs-01 2> /dev/null | grep '  Uuid' | cut -d: -f 2 | tr -d ' '
0a1bef2b-099c-4f52-9c89-eac01bd204bb

 

前回と同様、変数(FS_UUID)に結果を格納できます。

[gowatana@infra-jbox-01 ~]$ FS_UUID=$(ssh -o StrictHostKeyChecking=false nutanix@lab-nxce-01.go-lab.jp /home/nutanix/prism/cli/ncli fs list filter-criteria=Name search-string=test-fs-01 2> /dev/null | grep '  Uuid' | cut -d: -f 2 | tr -d ' ')
[gowatana@infra-jbox-01 ~]$ echo $FS_UUID
0a1bef2b-099c-4f52-9c89-eac01bd204bb

 

SSH 実行元の Linux には、CVM にはインストールされていない jq コマンドがあります。

[gowatana@infra-jbox-01 ~]$ jq -V
jq-1.5

 

ncli の結果から、grep などの代わりに、jq コマンドでファイル サーバー UUID を取得してみます。ncli では --json=pretty オプションにより出力を JSON 形式にしています。

[gowatana@infra-jbox-01 ~]$ ssh -o StrictHostKeyChecking=false nutanix@lab-nxce-01.go-lab.jp /home/nutanix/prism/cli/ncli --json=pretty fs list filter-criteria=Name search-string=test-fs-01 2> /dev/null | jq -r '.data[].uuid'
0a1bef2b-099c-4f52-9c89-eac01bd204bb

 

当然ながら、さきほどと同様に実行結果を変数に格納することができます。

[gowatana@infra-jbox-01 ~]$ FS_UUID=$(ssh -o StrictHostKeyChecking=false nutanix@lab-nxce-01.go-lab.jp /home/nutanix/prism/cli/ncli --json=pretty fs list filter-criteria=Name search-string=test-fs-01 2> /dev/null | jq -r '.data[].uuid')
[gowatana@infra-jbox-01 ~]$ echo $FS_UUID
0a1bef2b-099c-4f52-9c89-eac01bd204bb

 

このように、ncli 実行結果を CVM にインストールされていないコマンドで加工できるので便利かなと思います。

ただしこの方法では、共有フォルダの名前などで日本語を使用していると「????」といった出力になってしまいます。

[gowatana@infra-jbox-01 ~]$ ssh -o StrictHostKeyChecking=false nutanix@lab-nxce-01.go-lab.jp /home/nutanix/prism/cli/ncli --json=pretty fs list-shares uuid=$FS_UUID 2> /dev/null | jq -r '.data[] | [.uuid, .name]'
[
  "971bd2a2-3767-4774-81f8-3c5c4e360de7",
  "share-01"
]
[
  "17e71417-0e64-4a4e-82cb-bc5f983a3f07",
  "share-02"
]
[
  "a03355aa-654b-4aa3-a4a5-6412614dcc58",
  "????"
]

 

そこで、大量の Quota Policy を簡単に作成する、といったケースに限っては、ファイル サーバー UUID や共有フォルダ UUID をあらかじめ調べておき、Quota Policy の作成だけをリモートから実行してもよいかなと思います。(CVM にスクリプトなどを配置しないで済むように)

[gowatana@infra-jbox-01 ~]$ FS_UUID=0a1bef2b-099c-4f52-9c89-eac01bd204bb
[gowatana@infra-jbox-01 ~]$ SHARE_UUID=a03355aa-654b-4aa3-a4a5-6412614dcc58
[gowatana@infra-jbox-01 ~]$ ssh -o StrictHostKeyChecking=false nutanix@lab-nxce-01.go-lab.jp \
> /home/nutanix/prism/cli/ncli fs add-quota-policy \
> uuid=$FS_UUID share-uuid=$SHARE_UUID \
> principal-type=user \
> principal-value=tech02 \
> quota-size-gib=2 \
> quota-enforcement-type=Hard \
> send-quota-notifications-to-user=true \
> notification-recipients=tech02@ntnx.jp 2> /dev/null

    Task Status               : 0
    Task Uuid                 : 0aa85d44-d77c-45a3-aee5-c38d768a861d

 

つづく。

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