NTNX>日記

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

Nutanix REST API v3 で VM 作成してみる。

Nutanix CE で REST API v3 での VM 作成をためしてみます。

今回は curl を使用します。

[gowatana@client01 ~]$ curl --version
curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.21 Basic ECC zlib/1.2.7 libidn/1.28 libssh2/1.4.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz unix-sockets

下記のような JSON ファイルを用意します。今回作成する VM の名前は「api-test-vm01」にします。cluster と vNIC を接続するネットワーク(kind : subnet。作成ずみ)の UUID は事前に確認しておいたものを指定しています。

create-vm-sample.json

gist.github.com

VM を作成します。

[gowatana@client01 ~]$ ls create-vm-sample.json
create-vm-sample.json
[gowatana@client01 ~]$ curl -ks -X POST -H "Content-Type: application/json" -u 'admin:パスワード' -d @create-vm-sample.json https://ntnx-n01.go-lab.jp:9440/api/nutanix/v3/vms
{"status": {"state": "PENDING"}, "spec": {"cluster_reference": {"kind": "cluster", "uuid": "00055511-31e5-05f5-0443-0050568aade6"}, "name": "api-test-vm01", "resources": {"nic_list": [{"subnet_reference": {"kind": "subnet", "uuid": "83524fc1-9381-495e-b3b0-0a06d922d2e9"}}], "num_vcpus_per_socket": 1, "num_sockets": 1, "memory_size_mib": 1024, "power_state": "ON", "disk_list": [{"device_properties": {"disk_address": {"device_index": 0, "adapter_type": "IDE"}, "device_type": "CDROM"}}, {"device_properties": {"disk_address": {"device_index": 0, "adapter_type": "SCSI"}, "device_type": "DISK"}, "disk_size_mib": 16384}]}, "description": "Nutanix APIv3 create VM sample."}, "api_version": "3.0", "metadata": {"kind": "vm", "uuid": "75d71b16-0266-4849-a778-542d34baf6b0"}}[gowatana@client01 ~]$

VM が作成されました。
VM 作成時に返されるデータから VM(kind : vm)の UUID がわかるので、VM の情報を取得してみます。("kind": "vm", "spec_version": 0, "uuid": "75d71b16-0266-4849-a778-542d34baf6b0" あたり)

[gowatana@client01 ~]$ curl -ks -X GET -H "Content-Type: application/json" -u 'admin:パスワード' https://ntnx-n01.go-lab.jp:9440/api/nutanix/v3/vms/75d71b16-0266-4849-a778-542d34baf6b0
{"status": {"state": "COMPLETE", "cluster_reference": {"kind": "cluster", "name": "ce-n01", "uuid": "00055511-31e5-05f5-0443-0050568aade6"}, "description": "Nutanix APIv3 create VM sample.", "resources": {"nic_list": [{"ip_endpoint_list": [{"ip": "192.168.13.166", "type": "ASSIGNED"}], "nic_type": "NORMAL_NIC", "mac_address": "50:6b:8d:f8:d7:9e", "subnet_reference": {"kind": "subnet", "uuid": "83524fc1-9381-495e-b3b0-0a06d922d2e9"}}], "host_reference": {"kind": "host", "uuid": "5e9574bf-bbf8-4511-b367-180681021647", "name": "192.168.1.132"}, "hypervisor_type": "AHV", "num_vcpus_per_socket": 1, "num_sockets": 1, "gpu_list": [], "memory_size_mib": 1024, "power_state": "ON", "disk_list": [{"device_properties": {"disk_address": {"device_index": 0, "adapter_type": "IDE"}, "device_type": "CDROM"}}, {"device_properties": {"disk_address": {"device_index": 0, "adapter_type": "SCSI"}, "device_type": "DISK"}, "disk_size_mib": 16384}]}, "name": "api-test-vm01"}, "spec": {"description": "Nutanix APIv3 create VM sample.", "cluster_reference": {"kind": "cluster", "uuid": "00055511-31e5-05f5-0443-0050568aade6"}, "resources": {"nic_list": [{"subnet_reference": {"kind": "subnet", "uuid": "83524fc1-9381-495e-b3b0-0a06d922d2e9"}}], "num_vcpus_per_socket": 1, "num_sockets": 1, "memory_size_mib": 1024, "power_state": "ON", "disk_list": [{"device_properties": {"device_type": "CDROM", "disk_address": {"device_index": 0, "adapter_type": "IDE"}}}, {"device_properties": {"device_type": "DISK", "disk_address": {"device_index": 0, "adapter_type": "SCSI"}}, "disk_size_mib": 16384}]}, "name": "api-test-vm01"}, "api_version": "3.0", "metadata": {"owner_reference": {"kind": "user", "uuid": "8aa54f27-6263-44bf-b6d9-1476f58d330b", "name": "admin"}, "kind": "vm", "spec_version": 0, "uuid": "75d71b16-0266-4849-a778-542d34baf6b0", "categories": {}}}[gowatana@client01 ~]$

Prism Element からでも VM が作成されたことがわかります。

f:id:gowatana:20180112235449p:plain

しかし Nutanix DSF コンテナが指定できず、自動的に選定されたところに vDisk が作成されました。

f:id:gowatana:20180112235539p:plain

VM 作成のときには API v3 では指定できなそうで、このあたりは v2 のほうがよいのかもしれません。

http://developer.nutanix.com/reference/prism_element/v3/#vms-post

以上。