Nutanix のもつ IPAM(IP アドレス管理)機能で、IP アドレス プールの範囲から、特定の IP アドレスを割り当てないようにする方法を試してみます。
広い範囲で IP アドレス プールを作成している場合に、特定の IP アドレスだけ静的に設定しておきたい場合などに利用する機能です。
今回の内容です。
事前確認
前回の投稿と同じ環境を利用しています。
仮想ネットワーク「nw-vlan-14」には、192.168.14.10 ~ 192.168.14.19 の IP アドレス プールを追加してあります。
CVM$ acli net.get nw-vlan-14 nw-vlan-14 { identifier: 14 ip_config { dhcp_server_address: "192.168.14.20" ip_pool_list { end_address: "192.168.14.19" start_address: "192.168.14.10" } network_address: "192.168.14.0" prefix_length: 24 route_list { gateway: "192.168.14.1" network_address: "0.0.0.0" prefix_length: 0 } } logical_timestamp: 2 name: "nw-vlan-14" type: "kBridged" uuid: "d1735ff5-eecb-4cdb-a2dc-740e5e96f8f3" }
VM を 10台ほど作成してみます。
CVM$ acli vm.create 'nw-test-[01..10]' nw-test-01: pending nw-test-02: pending nw-test-03: pending nw-test-04: pending nw-test-05: pending nw-test-06: pending nw-test-07: pending nw-test-08: pending nw-test-09: pending nw-test-10: pending nw-test-02: complete nw-test-01: complete nw-test-05: complete nw-test-04: complete nw-test-03: complete nw-test-06: complete nw-test-10: complete nw-test-09: complete nw-test-08: complete nw-test-07: complete
そして IPAM 有効なネットワークに接続する vNIC を追加します。
CVM$ for i in {01..10}; do acli vm.nic_create nw-test-$i network=nw-vlan-14; done NicCreate: pending NicCreate: complete NicCreate: pending NicCreate: complete NicCreate: pending NicCreate: complete NicCreate: pending NicCreate: complete NicCreate: pending NicCreate: complete NicCreate: pending NicCreate: complete NicCreate: pending NicCreate: complete NicCreate: pending NicCreate: complete NicCreate: pending NicCreate: complete NicCreate: pending NicCreate: complete
VM(の vNIC)に、IP アドレス プールからアドレスからアドレスが割り当ててられました。ちなみに、IP アドレスは開始番号から順に割り当てられるわけではありません。
いったん、VM を削除します。
CVM$ acli -y vm.delete 'nw-test-*' nw-test-01: pending nw-test-02: pending nw-test-03: pending nw-test-04: pending nw-test-05: pending nw-test-06: pending nw-test-07: pending nw-test-08: pending nw-test-09: pending nw-test-10: pending nw-test-03: complete nw-test-06: complete nw-test-07: complete nw-test-02: complete nw-test-10: complete nw-test-09: complete nw-test-04: complete nw-test-05: complete nw-test-08: complete nw-test-01: complete
IP アドレス プールでの IP アドレス予約(ip_blacklist)
IP アドレス プールの予約(ip_blacklist)に、192.168.14.12 と 192.168.14.13 を追加してみます。
CVM$ acli net.add_to_ip_blacklist nw-vlan-14 ip_list=192.168.14.12,192.168.14.13 CVM$ acli net.list_ip_blacklist nw-vlan-14 192.168.14.12 192.168.14.13
ふたたび VM と vNIC を作成すると、IP アドレス プールから割り当てられるアドレスが不足して、9台目からエラーになります。
CVM$ acli vm.create 'nw-test-[01..10]' nw-test-01: pending nw-test-02: pending nw-test-03: pending nw-test-04: pending nw-test-05: pending nw-test-06: pending nw-test-07: pending nw-test-08: pending nw-test-09: pending nw-test-10: pending nw-test-01: complete nw-test-02: complete nw-test-06: complete nw-test-05: complete nw-test-03: complete nw-test-04: complete nw-test-09: complete nw-test-07: complete nw-test-08: complete nw-test-10: complete CVM$ for i in {01..10}; do acli vm.nic_create nw-test-$i network=nw-vlan-14; done NicCreate: pending NicCreate: complete NicCreate: pending NicCreate: complete NicCreate: pending NicCreate: complete NicCreate: pending NicCreate: complete NicCreate: pending NicCreate: complete NicCreate: pending NicCreate: complete NicCreate: pending NicCreate: complete NicCreate: pending NicCreate: complete NicCreate: pending NicCreate: AddressPoolExhausted: Cannot allocate address! No DHCP pool is defined or the DHCP pool is exhausted. NicCreate: pending NicCreate: AddressPoolExhausted: Cannot allocate address! No DHCP pool is defined or the DHCP pool is exhausted.
IP アドレスは、プールの範囲から 192.168.14.12 と 192.168.14.13 を避けて割り当てられています。
IP アドレス プールでの IP アドレス予約削除
IP アドレス プールから、予約したアドレスを削除しておきます。
CVM$ acli net.delete_from_ip_blacklist nw-vlan-14 ip_list=192.168.14.12,192.168.14.13 CVM$ acli net.list_ip_blacklist nw-vlan-14 CVM$
これで、残りの 2台の VM にも、vNIC が作成できます。
CVM$ for i in {09..10}; do acli vm.nic_create nw-test-$i network=nw-vlan-14; done NicCreate: pending NicCreate: complete NicCreate: pending NicCreate: complete
予約(ip_blacklist)から削除したアドレスが、プールから割り当てられました。
ちなみに、めずらしく CLI や API の URL に blacklist という表現が残っていますが、API から確認すると、IP アドレスが「type: RESERVATION」(予約)といった値になっています。一方、vNIC に割り当てられた IP は「type: VM」になります。
CVM$ curl -ks -u "$USER:$PASS" -X GET https://lab-nxce-01.go-lab.jp:9440/api/nutanix/v2.0/networks/$NW_UUID/addresses | python -m json.tool { "entities": [ { "deleted": null, "entity_uuid": null, "ip_address": "192.168.14.12", "mac_address": null, "network_uuid": null, "overlay_network_id": null, "type": "RESERVATION" }, { "deleted": null, "entity_uuid": null, "ip_address": "192.168.14.13", "mac_address": null, "network_uuid": null, "overlay_network_id": null, "type": "RESERVATION" } ], "metadata": { "grand_total_entities": 2, "total_entities": 2 } }
以上。