NTNX>日記

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

Nutanix API v2 で VM の IP アドレスを取得してみる。(Python)

Nutanix CE で起動する VM の IP アドレスを、Nutanix REST API v2 で確認してみます。あわせて、IPAM 利用の有無によるフィールド情報の違いも見てみます。

以前の投稿 Nutanix API v2 で VM の IP アドレスを取得してみる。 から、少しサンプル スクリプトも改修しています。

スクリプトの内容

  • Python 2.7 or 3.6 で実行可能。
  • Prism へのログイン情報を、別ファイルで用意する。
  • VM 名を指定して実行すると、vNIC ごとに、VM の UUID、VM 名、MAC アドレス、IP アドレスを表示。
  • Nutanix REST API v2 の、GET /vms/{vm_uuid}/nics/{nic_id} の情報を取得。requested_ip_address と ip_address の 2つのフィールドから IP アドレスを取得。

スクリプトは下記のように作成しました。

gist.github.com

スクリプトとは別に、下記の Prism への接続情報ファイルを作成しておきます。

gist.github.com

スクリプトの実行方法

ここでは、Python3 を利用します。

$ python3 -V
Python 3.6.8

スクリプトは下記のように実行します。引数として Prism 接続情報のファイル、VM 名を指定します。情報取得した VM 「vm15」には vNIC が1つ(MAC アドレスは 50:6b:8d:05:b1:0f)だけ存在しており、requested_ip_address と ip_address フィールドごとに 1行ずつ表示されています。

$ python3 ./get_ntnx_vm-ip.py ./prism-config.json vm15
aef536bb-7ee5-4016-97ec-fb9d90c1dca4,vm15,50:6b:8d:05:b1:0f,requested_ip_address:192.168.6.100
aef536bb-7ee5-4016-97ec-fb9d90c1dca4,vm15,50:6b:8d:05:b1:0f,ip_address:192.168.6.100

スクリプト実行例

いくつか、構成のことなる VM から情報取得してみます。

VM「vm01」は、IPAM 無効のネットワークに接続された vNIC を1つだけ持っています。VM は停止しており、requested_ip_address と ip_address は、両方とも IP アドレス情報を持っていません。

$ python3 ./get_ntnx_vm-ip.py ./prism-config.json vm01
98d73a1a-f3b4-468f-906b-6fc78ce0e4e0,vm01,50:6b:8d:88:ad:87,requested_ip_address:None
98d73a1a-f3b4-468f-906b-6fc78ce0e4e0,vm01,50:6b:8d:88:ad:87,ip_address:None

VM「vm02」も、IPAM 無効のネットワークに接続された vNIC を1つだけ持っています。VM はパワーオンされており Nutanix ではない外部の DHCP サーバから IP アドレスを取得しています。この場合、requested_ip_address は空ですが、ip_address から実際にゲスト OS に設定された IP アドレスが取得できます。

$ python3 ./get_ntnx_vm-ip.py ./prism-config.json vm02
1feb8930-e4d0-4644-9f83-696ad793e0bc,vm02,50:6b:8d:87:fd:6a,requested_ip_address:None
1feb8930-e4d0-4644-9f83-696ad793e0bc,vm02,50:6b:8d:87:fd:6a,ip_address:192.168.1.16

VM「vm03」は、IPAM 有効のネットワークに接続された vNIC を1つだけ持っています。VM は停止されていますが、この場合は requested_ip_address と ip_address から同じ IP アドレスが取得できます。

$ python3 ./get_ntnx_vm-ip.py ./prism-config.json vm03
f14f2897-d773-4400-9f17-c0c299f257ad,vm03,50:6b:8d:95:26:73,requested_ip_address:192.168.6.159
f14f2897-d773-4400-9f17-c0c299f257ad,vm03,50:6b:8d:95:26:73,ip_address:192.168.6.159

この Nutanix クラスタには、「vm04」という名前の VM が2つ存在します。Nutanix クラスタでは、VM の名前が一意とは限らないのですが、VM UUID で VM を判別できます。

  • 1つめの「vm04」は、IPAM 有効のネットワークに接続された vNIC を1つ(50:6b:8d:73:79:02)だけ持っています。
  • 2つめの「vm04」は、IPAM 無効のネットワークに接続された vNIC を1つ(50:6b:8d:dd:8d:08)、IPAM 有効のネットワークに接続された vNIC も 1つ(50:6b:8d:15:cc:d0)、合計で 2つの vNIC を持っています。
$ python3 ./get_ntnx_vm-ip.py ./prism-config.json vm04
d11a889c-0002-4ebb-ada6-79dc56f07958,vm04,50:6b:8d:73:79:02,requested_ip_address:192.168.6.124
d11a889c-0002-4ebb-ada6-79dc56f07958,vm04,50:6b:8d:73:79:02,ip_address:192.168.6.124
da04abcb-891c-4f0c-adfc-d50e06cb104b,vm04,50:6b:8d:dd:8d:08,requested_ip_address:None
da04abcb-891c-4f0c-adfc-d50e06cb104b,vm04,50:6b:8d:dd:8d:08,ip_address:192.168.1.6
da04abcb-891c-4f0c-adfc-d50e06cb104b,vm04,50:6b:8d:15:cc:d0,requested_ip_address:192.168.6.127
da04abcb-891c-4f0c-adfc-d50e06cb104b,vm04,50:6b:8d:15:cc:d0,ip_address:192.168.6.127

以上。

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