vm.gowatana.jp

NEOにほんごVMware(仮)

NSX-T のカスタム ダッシュボードでひとこと。

この投稿は、vExperts Advent Calendar 2021 の 1日目です。

adventar.org

 

はじめに

VMware Hands-on Labs(HoL)を使用して、ライトなネタを紹介しようと思います。

先日、Japan VMUG vExpert が語る会にて、REST API で NSX-T のタグを操作するデモを紹介しました。

今回は、もうすこしライトなサンプルを紹介します。

 

そして、NSX-T の API リファレンスはこちら。

 

使用する HoL

NSX-T の分散ファイアウォールを体験できる Lightning Lab を利用します。

ただし、ラボのシナリオとは異なる手順を実施するので、今回の内容は、NSX-T 3.x の環境があればどこでも試せるはずです。

f:id:gowatana:20211201022759p:plain

 

HoL を利用する工夫など

本題の準備として、いくつか Tips を紹介しておきます。

 

NSX-T のテーマ(見ため)

ラボ マニュアルにしたがって NSX-T の NSX Manager(nsxmgr-01a)に「nsx-admin@corp.local / VMware1!」でログインすると、デフォルトではダーク テーマになっています。

好みによっては、画面右上の太陽のようなマークをクリックすると・・・

f:id:gowatana:20211201042037p:plain

 

ライト テーマ(NSX-T 3.0 以前のデフォルト)になります。

f:id:gowatana:20211201042148p:plain

 

テキストの送信

HoL の画面左上のあたりに、「テキストの送信」機能があります。

この機能で、分量の多いスクリプトや JSON データなどを転送することができます。

f:id:gowatana:20211201042459p:plain

 

テキストを転送した際に、記号など(@など)が意図しない文字になってしまうことがります。

その場合は、HoL の Keyboard Layout を、日本語ではなく「English (US)」のままにしておくと解決できることがあります。

f:id:gowatana:20211201042636p:plain

 

Linux 踏み台

HoL の操作は Windows から実行することになりますが、Linux から操作したくなることがあります。その場合は、どの HoL にも大抵存在する VCSA(vcsa-01a)や、Web サーバ(web-01a)などが作業踏み台として利用できたりします。たとえばシェル + curl で REST API をコールしたい場合などに役に立つはずです。

これらのサーバは、コンソールの PuTTY にアドレスが登録されており、SSH でログインできます。

 

REST API による NSX-T カスタム ダッシュボードの操作

それでは、Linux(今回は web-01a)から、curl で NSX-T REST API を試してみます。

 

まず、NSX Manger の「Home」→「Monitoring Dashboards」→「Custom」を開きます。

f:id:gowatana:20211201043839p:plain

 

デフォルトでは、Custom ダッシュボードは空欄の状態です。

f:id:gowatana:20211201043948p:plain

 

Linux web-01a に PuTTY から SSH ログインして、「テキストの送信」で順に JSON データやコマンド ラインを送信していきます。

まずは、ダッシュボードに追加するウィジェットを定義した JSON ファイルを、ヒアドキュメント(cat << EOF > ファイル名; ~; EOF のような)で送付して、Linux にファイルとして保存します。

 

まず「テキストに送信」のウインドウに張り付けて送信するのは、下記の内容です。

このような長文の場合は、送信中にうっかりキーボードに触れないように要注意です。また、JSON のように改行やインデントを意識しないデータの場合は、HoL むけに省略可能な文字は省略したバージョンのファイルを要しておくと、デモや検証がはかどるかなと思います。

gist.github.com

 

上記内容の送信が完了したら、Enter キーを押します。f:id:gowatana:20211201045910p:plain

 

これで、「nsx-t_dashboard_widget_advent_2021.json」というテキスト ファイルとして保存されるはずです。

続けて、「テキストの送信」で NSX Manager へのログイン情報を送信して、変数に格納しておきます。

USER=nsx-admin@corp.local
PASS='VMware1!'
MGR=nsxmgr-01a

 

それでは、nsx-t_dashboard_widget_advent_2021.json の内容をもとに、カスタム ダッシュボードにウィジェットを追加してみます。コマンド ラインが長いので、バックスラッシュ(\)で途中改行しています。

API リファレンスでは /api/v1/ui-views/~ といったリソースがまず見つかるのですが、Policy UI のカスタム ダッシュボードにウィジェットを表示するには /policy/api/v1/ui-views/~ といた URL を指定します。

curl -k -s \
-u "$USER:$PASS" \
-H "Content-Type: application/json" \
-X POST \
-d @nsx-t_dashboard_widget_advent_2021.json \
https://$MGR/policy/api/v1/ui-views/dashboard_custom/widgetconfigurations

 

ダッシュボードで「REFRESH」をクリックすると、ウィジェットが表示されているはずです。(わずかにクリスマス カラー)

f:id:gowatana:20211201050337p:plain

 

ちなみに、カスタム ダッシュボードに追加したウィジェットは、下記のようなコマンドラインで削除できるはずです。

  • 今回利用している web-01a には Python3 がインストールされています。Python2 の Linux で実行する場合は、python3 → python のように実行する Python を変更します。
  • jq コマンドが利用できる環境であれば、もうすこしわかりやすいコマンド ラインにできると思います。
curl -ks -u "$USER:$PASS" \
https://$MGR/policy/api/v1/ui-views/dashboard_custom/widgetconfigurations | \
python3 -m json.tool | grep '"id":' | cut -d\" -f 4 | while read L
do
  curl -ks -u "$USER:$PASS" -X DELETE \
  https://$MGR/policy/api/v1/ui-views/dashboard_custom/widgetconfigurations/$L
done

 

ダッシュボードで「REFRESH」をクリックすると、ウィジェットが削除されているはずです。

f:id:gowatana:20211201050509p:plain

 

このように、VMware の HoL はシナリオとは異なる検証にも利用できます。不定期で(長くても1年ごとくらい)ラボのコンテンツは更新されますが、vSphere / vSAN / NSX のようなベーシックな製品のラボは絶えず提供されているので、検証 / デモに便利かなと思います。

 

ちなみに、HoL では日本語入力が扱いにくいのですが、ウィジェットに表示するテキストでは日本語も利用可能です。(これは自宅ラボの NSX Manager)

f:id:gowatana:20211201050644p:plain

 

vExperts Advent Calendar 2021 の 2日目は、tunemicky さんです。
よろしくお願いします。