この投稿は、Nutanix Advent Calendar 2021 の 14日目です。
Nutanix のもつ IPAM(IP アドレス管理)機能で、割り当て済みの IP アドレスを、REST API から確認してみようと思います。
利用する REST API は、めずらしく v2 です。
今回の内容です。
今回の環境
Nutanix CE 2020.09.16で、ハイパーバイザーは AHV です。
Nutainx の IPAM
Nutanix AHV では、VM の vNIC をネットワーク接続するために、Prism にて仮想ネットワークを作成します。
そして、仮想ネットワークには IPAM 機能があります。
この IPAM 機能で払い出してある IP アドレスを確認してみます。
REST API v2 での IPAM IP アドレス確認
今回は、Linux マシンの curl から実行します。
Linux$ cat /etc/system-release Oracle Linux Server release 7.9 Linux$ rpm -q curl curl-7.29.0-59.0.1.el7_9.1.x86_64 Linux$ rpm -q jq jq-1.5-1.0.1.el7.x86_64
接続のための情報は変数に格納しておきます。
Linux$ USER=admin Linux$ PASS='パスワード' Linux$ PRISM=lab-nxce-01.go-lab.jp
さきほどスクリーンショットを掲載した、仮想ネットワーク「nw-vlan-14」の情報を取得してみます。/v2.0/networks の GET メソッドだとリファレンスだとフィルターが無そうなので、jq で取得対象をフィルターしています。
Linux$ curl -ks -u "$USER:$PASS" -X GET https://$PRISM:9440/api/nutanix/v2.0/networks | jq -r '.entities[] | select(.name=="nw-vlan-14")' { "logical_timestamp": 1, "vlan_id": 14, "ip_config": { "network_address": "192.168.14.0", "prefix_length": 24, "default_gateway": "192.168.14.1", "dhcp_options": {}, "pool": [ { "range": "192.168.14.10 192.168.14.19" } ], "dhcp_server_address": "192.168.14.20" }, "uuid": "d1735ff5-eecb-4cdb-a2dc-740e5e96f8f3", "name": "nw-vlan-14" }
ここから、仮想ネットワーク UUID を確認しておきます。
Linux$ 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') Linux$ echo $NW_UUID d1735ff5-eecb-4cdb-a2dc-740e5e96f8f3
仮想ネットワークの UUID が分かると、REST API の URL でもネットワークが指定できるようになります。
Linux$ curl -ks -u "$USER:$PASS" -X GET https://$PRISM:9440/api/nutanix/v2.0/networks/$NW_UUID | jq -r . { "logical_timestamp": 1, "vlan_id": 14, "ip_config": { "network_address": "192.168.14.0", "prefix_length": 24, "default_gateway": "192.168.14.1", "dhcp_options": {}, "pool": [ { "range": "192.168.14.10 192.168.14.19" } ], "dhcp_server_address": "192.168.14.20" }, "uuid": "d1735ff5-eecb-4cdb-a2dc-740e5e96f8f3", "name": "nw-vlan-14" }
それでは、IPAM の IP アドレスを確認してみます。ただし、この時点ではまだ IP アドレスが払い出されていません。
Linux$ curl -ks -u "$USER:$PASS" -X GET https://$PRISM:9440/api/nutanix/v2.0/networks/$NW_UUID/addresses | jq -r . { "metadata": { "grand_total_entities": 0, "total_entities": 0 }, "entities": [] }
CVM で VM を作成して、この仮想ネットワークに接続する vNIC を追加してみました。
nutanix@NTNX-624676c4-A-CVM:192.168.20.52:~$ acli vm.create nw-test-01 nw-test-01: pending nw-test-01: complete nutanix@NTNX-624676c4-A-CVM:192.168.20.52:~$ acli vm.nic_create nw-test-01 network=nw-vlan-14 NicCreate: pending NicCreate: complete
まだ VM は起動していませんが、この時点で IPAM で IP アドレスが採番されました。
Linux$ curl -ks -u "$USER:$PASS" -X GET https://$PRISM:9440/api/nutanix/v2.0/networks/$NW_UUID/addresses | jq -r . { "metadata": { "grand_total_entities": 1, "total_entities": 1 }, "entities": [ { "mac_address": "50:6b:8d:e3:20:09", "ip_address": "192.168.14.12", "network_uuid": null, "entity_uuid": "a26ebde6-9128-4555-a74c-7504fab736a9", "overlay_network_id": null, "type": "VM", "deleted": null } ] }
Nutanix の IPAM が DHCP のリクエストではなく、CVM によって IP アドレスが管理されている様子が見られたかなと思います。
ちなみに、Nutanix CE ではまだ未対応ですが、最近の AOS(商用版の方)では IPAM で割り当て済みの IP アドレスが Prism でも確認可能になっています。クリスマス会などで話題に困ったら Prism を開くとよいと思います。
以上。