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 アドレスを取得。
スクリプトは下記のように作成しました。
スクリプトとは別に、下記の Prism への接続情報ファイルを作成しておきます。
スクリプトの実行方法
ここでは、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
以上。