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
つづく。