NTNX>日記

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

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

Nutanix の Acropolis IP address management(IPAM)で管理されている IP アドレスを、 Python + API v2 で取得してみます。

スクリプトの内容

  • Python 2.7 を使用。
  • VM 名を指定して実行すると、vNIC ごとに UUID、MAC アドレス、IP アドレス、VM 名を表示。
  • Nutanix REST API は v2。
  • /vms/{vm_uuid}/nics/{nic_id} の requested_ip_address では IP が取れない vNIC があるので、その場合は /networks/{uuid}/addresses の ip_address から IP を取得する。→これは IPAM を使用していないネットワーク接続の vNIC みたいなので、割り切って取得しないようにしました。(以前のはこれ ntnx-vm-ip.py · GitHub

スクリプトはこんな感にしてみました。

vNIC が2つある VM を指定して実行するとこんな感じです。ちなみに IPAM を使用していない vNIC は、IP アドレスが空欄になるようにしています。

[root@jbox01 ~]# python ntnx-vm-ip.py vm03
d38785cd-45ec-48b9-b26f-5f26c7f011bf,50:6b:8d:f8:78:1a,192.168.1.223,vm03
d38785cd-45ec-48b9-b26f-5f26c7f011bf,50:6b:8d:06:81:6a,192.168.12.179,vm03

IP アドレスが分かれば、何かしらの自動化などで利用できそうだと思います。

[root@jbox01 ~]# python ntnx-vm-ip.py db02 | awk -F, '{print $3}'
192.168.12.146
[root@jbox01 ~]# python ntnx-vm-ip.py db02 | awk -F, '{print $3}' >> hosts
[root@jbox01 ~]# ansible -i ./hosts -m ping 192.168.12.146
192.168.12.146 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

感想

  • 正直、CVM で直接 acli コマンドを実行してしまった方が簡単な気がする。
  • ただ API であれば Prism のユーザで処理実行できるので、CVM の OS に直接ログインするよりよいかもしれない。 
  • Nutanix Acropolis の IPAM を使用できるなら、基本的に全部の vNIC を IPAM 管理にしたほうが美しいかもしれない。API で簡潔に情報取得しやすいので。

以上。