Nutanix Meetup Online 22.01 にて、Nutanix Advent Calendar 2021 投稿の紹介をしました。おまけで、API 活用例を紹介しました。
今回の内容です。
Advent Calendar 投稿の紹介
Advent Calendar では、12/14 に投稿しました。
Nutanix IPAM(IP アドレス管理)機能で 割り当て済みの IP アドレスを、REST API から確認してみました。
AHV の仮想ネットワーク情報は、Prism の REST API v2 にある /networks の、GET メソッドで情報取得できます。
/networks では、すべてのネットワークの情報が取得されます。そこで、jq コマンドで「nw-vlan-14」ネットワークのみに絞っています。
仮想ネットワークの UUID をもとに、特定の仮想ネットワークの情報だけ取得することもできます。
IPAM で払い出されている IP アドレスは、/networks/<仮想ネットワークの UUID>/addresses で確認できます。
REST API で取得した情報は、適宜 jq コマンドや Python などで加工して利用すると便利です。下記の例では jq コマンドで形式変換しています。(@csv が、JSON → CSV )
- type が「VM」は、VM(の vNIC)に払い出してある IP アドレスです。
- type が「RESERVATION」は、IPAM で予約(払い出しから除外)したアドレスです。
おまけ(REST API で、簡易 IP 管理台帳)
せっかくなので、REST API で取得した情報を活用してみます。
Linux サーバの用意
Linux サーバを用意します。
# cat /etc/oracle-release Oracle Linux Server release 8.3
jq コマンドがインストール済みです。
# rpm -q jq jq-1.5-12.el8.x86_64
Python3 がインストール済みです。
# python3 -V Python 3.8.8
そして、pandas をインストールしておきます。
# python3 -m venv meetup # . meetup/bin/activate # pip3 install pandas
CSV ファイルの作成
Nutanix CE から、REST API で IP アドレス情報を取得して、CSV ファイルとして出力します。
ipam_ip.csv ファイルを作成しつつ、ヘッダー行を書き込みます。
# echo 'ip_address,type,mac_address,entity_uuid' > ipam_ip.csv
curl で、REST API をコールします。そして結果は、 jq コマンドで CSV に変換しつつ ipam_ip.csv ファイルに追記します。
# USER=admin # PASS='パスワード’ # PRISM=Prismのアドレス # NW_UUID=$(curl -ks -u "$USER:$PASS" -X GET https://$PRISM:9440/api/nutanix/v2.0/networks | \ jq -r '.entities[] | select(.name=="nw-vlan-14") | .uuid’) # curl -ks -u "$USER:$PASS" -X GET https://$PRISM:9440/api/nutanix/v2.0/networks/$NW_UUID/addresses | \ jq -r '.entities[] | [.ip_address, .type, .mac_address, .entity_uuid] | @csv' >> ipam_ip.csv
CSV → HTML 変換
下記のような Python コードを用意しておきます。冒頭でインストールした pandas ライブラリを利用しています。
Python コードを、ワンライン(-c)で実行します。長くなるので、一部の変数は省略しました。(csv → c)
これで、CSV ファイル「ipam_ip.csv」が、 HTML ファイル「index.html」に変換されます。
# python3 -c 'import pandas as pd; c=pd.read_csv("ipam_ip.csv"); c.to_html("index.html"); c.to_html()'
Python の http.server モジュールによる、Web サーバを起動します。
- デフォルト ポートは 8000 です。
- OS のファイアウォール別途開放しておきます。
(firewall-cmd --add-port=8000/tcp、systemctl stop firewalld など)
# python3 -m http.server
Web ブラウザからアクセスすると、簡易的な IP 管理台帳が表示されます。
ちなみに・・・
- 最近の AOS だと、Prism Element からこの情報が確認できます。
- 残念ながら Nutanix CE の AOS バージョンだと、まだ見られません。
- VM も、UUID じゃなくて 名前で表示されます。
Advent Calendar の紹介
こちらもどうぞ。
ありがとうございました。
画像素材はこちら → https://nutanix.design/illustrations/
当日の録画
0:23:44 ~
Nutanix CE で、IPAM での IP アドレス割り当ての様子を確認してみる。
以上。