この投稿は、vExperts Advent Calendar 2021 の 1日目です。
はじめに
VMware Hands-on Labs(HoL)を使用して、ライトなネタを紹介しようと思います。
先日、Japan VMUG vExpert が語る会にて、REST API で NSX-T のタグを操作するデモを紹介しました。
- Japan VMUG「vExpert が語る」について
https://github.com/gowatana/japan-vmug-vexpert-talks - 「vExpert が語る HOL」レコーディングは こちら
今回は、もうすこしライトなサンプルを紹介します。
そして、NSX-T の API リファレンスはこちら。
使用する HoL
NSX-T の分散ファイアウォールを体験できる Lightning Lab を利用します。
ただし、ラボのシナリオとは異なる手順を実施するので、今回の内容は、NSX-T 3.x の環境があればどこでも試せるはずです。
- NSX Distributed Firewall Lightning Lab (HOL-2226-91-SEC)
https://labs.hol.vmware.com/HOL/catalogs/lab/10959
HoL を利用する工夫など
本題の準備として、いくつか Tips を紹介しておきます。
NSX-T のテーマ(見ため)
ラボ マニュアルにしたがって NSX-T の NSX Manager(nsxmgr-01a)に「nsx-admin@corp.local / VMware1!」でログインすると、デフォルトではダーク テーマになっています。
好みによっては、画面右上の太陽のようなマークをクリックすると・・・
ライト テーマ(NSX-T 3.0 以前のデフォルト)になります。
テキストの送信
HoL の画面左上のあたりに、「テキストの送信」機能があります。
この機能で、分量の多いスクリプトや JSON データなどを転送することができます。
テキストを転送した際に、記号など(@など)が意図しない文字になってしまうことがります。
その場合は、HoL の Keyboard Layout を、日本語ではなく「English (US)」のままにしておくと解決できることがあります。
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」を開きます。
デフォルトでは、Custom ダッシュボードは空欄の状態です。
Linux web-01a に PuTTY から SSH ログインして、「テキストの送信」で順に JSON データやコマンド ラインを送信していきます。
まずは、ダッシュボードに追加するウィジェットを定義した JSON ファイルを、ヒアドキュメント(cat << EOF > ファイル名; ~; EOF のような)で送付して、Linux にファイルとして保存します。
まず「テキストに送信」のウインドウに張り付けて送信するのは、下記の内容です。
このような長文の場合は、送信中にうっかりキーボードに触れないように要注意です。また、JSON のように改行やインデントを意識しないデータの場合は、HoL むけに省略可能な文字は省略したバージョンのファイルを要しておくと、デモや検証がはかどるかなと思います。
上記内容の送信が完了したら、Enter キーを押します。
これで、「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」をクリックすると、ウィジェットが表示されているはずです。(わずかにクリスマス カラー)
ちなみに、カスタム ダッシュボードに追加したウィジェットは、下記のようなコマンドラインで削除できるはずです。
- 今回利用している 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」をクリックすると、ウィジェットが削除されているはずです。
このように、VMware の HoL はシナリオとは異なる検証にも利用できます。不定期で(長くても1年ごとくらい)ラボのコンテンツは更新されますが、vSphere / vSAN / NSX のようなベーシックな製品のラボは絶えず提供されているので、検証 / デモに便利かなと思います。
ちなみに、HoL では日本語入力が扱いにくいのですが、ウィジェットに表示するテキストでは日本語も利用可能です。(これは自宅ラボの NSX Manager)
vExperts Advent Calendar 2021 の 2日目は、tunemicky さんです。
よろしくお願いします。
vExpert が語る会 LT の録画
2022年02月09日(水)18:00 - 20:00 に開催した、vExpert が語る会 LT にて、この投稿を紹介しました。
- https://github.com/gowatana/japan-vmug-vexpert-talks
vExperts Advent Calendar 2021 Lightning Talk #1 - Go Watanabe