NTNX>日記

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

Advent Calendar 2021 LT(Nutanix Meetup 22.01)

Nutanix Meetup Online 22.01 にて、Nutanix Advent Calendar 2021 投稿の紹介をしました。おまけで、API 活用例を紹介しました。

nutanix.connpass.com

今回の内容です。

Advent Calendar 投稿の紹介

Advent Calendar では、12/14 に投稿しました。

Nutanix IPAM(IP アドレス管理)機能で 割り当て済みの IP アドレスを、REST API から確認してみました。

f:id:gowatana:20220126195526p:plain

AHV の仮想ネットワーク情報は、Prism の REST API v2 にある /networks の、GET メソッドで情報取得できます。

/networks では、すべてのネットワークの情報が取得されます。そこで、jq コマンドで「nw-vlan-14」ネットワークのみに絞っています。

f:id:gowatana:20220126195536p:plain

仮想ネットワークの UUID をもとに、特定の仮想ネットワークの情報だけ取得することもできます。

f:id:gowatana:20220126195547p:plain

IPAM で払い出されている IP アドレスは、/networks/<仮想ネットワークの UUID>/addresses で確認できます。

f:id:gowatana:20220126195558p:plain

REST API で取得した情報は、適宜 jq コマンドや Python などで加工して利用すると便利です。下記の例では jq コマンドで形式変換しています。(@csv が、JSON → CSV )

  • type が「VM」は、VM(の vNIC)に払い出してある IP アドレスです。
  • type が「RESERVATION」は、IPAM で予約(払い出しから除外)したアドレスです。

f:id:gowatana:20220126195607p:plain

おまけ(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 ライブラリを利用しています。

gist.github.com

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 管理台帳が表示されます。

f:id:gowatana:20220126200216p:plain

ちなみに・・・

  • 最近の AOS だと、Prism Element からこの情報が確認できます。
  • 残念ながら Nutanix CE の AOS バージョンだと、まだ見られません。
  • VM も、UUID じゃなくて 名前で表示されます。

Advent Calendar の紹介

こちらもどうぞ。

f:id:gowatana:20220126195857p:plain

ありがとうございました。

f:id:gowatana:20220126195910p:plain

画像素材はこちら → https://nutanix.design/illustrations/

当日の録画

0:23:44 ~
Nutanix CE で、IPAM での IP アドレス割り当ての様子を確認してみる。

www.youtube.com

以上。

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