Nutanix CE で REST API v3 の GET メソッドなどでは、UUID の指定が必要になります。そこで、VM の一覧を取得から UUID を特定してみます。今回は curl と jq を利用してみます。
VM 一覧は、API Explorer では下記の投稿のように取得できます。
一方、curl コマンドでは下記のように実行すると同様の VM 一覧が取得できます。
(ntnx-n01.go-lab.jp は うちの Nutanix CE のアドレスです)
[gowatana@client01 ~]$ curl -ks -X POST -H "Content-Type: application/json" -u "admin:$PASS" -d '{}' https://ntnx-n01.go-lab.jp:9440/api/nutanix/v3/vms/list
admin ユーザで認証する必要があるようです。パスワード文字列は下記のように PASS という変数に格納しています。
[gowatana@client01 ~]$ PASS='パスワード'
今回は、JSON 形式のデータの整形・抽出に jq コマンドを利用します。
[gowatana@client01 ~]$ jq -V jq-1.5
たとえば、下記のように JSON から特定の情報だけ抽出したりします。
[gowatana@client01 ~]$ curl -ks -X POST -H "Content-Type: application/json" -u "admin:$PASS" -d '{}' https://ntnx-n01.go-lab.jp:9440/api/nutanix/v3/vms/list | jq -C '.entities[] | {vm_name: .spec.name, vm_uuid: .metadata.uuid}' { "vm_name": "k8s-setup-01", "vm_uuid": "00bb0224-fd44-4df3-a6f9-a47a994e8c85" } { "vm_name": "master-0-k8s-cluster-01", "vm_uuid": "12d7ef75-5a2a-4123-a75b-c5a3c5699d88" } { "vm_name": "ol74-cloud-init", "vm_uuid": "82f147cc-1bfe-4292-bc5c-ef66e9bdbd56" } { "vm_name": "worker-0-k8s-cluster-01", "vm_uuid": "0583edfa-1178-4d46-9420-83b91b73989b" } { "vm_name": "api-test-vm01", "vm_uuid": "dfd420e4-2948-4f32-99f1-89fe2e7098e6" } { "vm_name": "worker-1-k8s-cluster-01", "vm_uuid": "0e780425-ed5f-46af-b924-5ba5d2b9b700" } { "vm_name": "centos7-cloud-init", "vm_uuid": "77202ecb-7494-4e9d-a8de-25167dcc00ab" } { "vm_name": "ol74-k8s-base", "vm_uuid": "9d667466-17e4-4199-a9e2-66b85702a91b" } [gowatana@client01 ~]$
ためしに、上記の実行結果から、VM「api-test-vm01」だけ抽出しています。
[gowatana@client01 ~]$ curl -ks -X POST -H "Content-Type: application/json" -u "admin:$PASS" -d '{}' https://ntnx-n01.go-lab.jp:9440/api/nutanix/v3/vms/list | jq -C '.entities[] | {vm_name: .spec.name, vm_uuid: .metadata.uuid} | select(.vm_name == "api-test-vm01")' { "vm_name": "api-test-vm01", "vm_uuid": "dfd420e4-2948-4f32-99f1-89fe2e7098e6" }
UUID だけに絞ることもできます。
[gowatana@client01 ~]$ curl -ks -X POST -H "Content-Type: application/json" -u "admin:$PASS" -d '{}' https://ntnx-n01.go-lab.jp:9440/api/nutanix/v3/vms/list | jq -C '.entities[] | select(.spec.name == "api-test-vm01") | .metadata.uuid' "dfd420e4-2948-4f32-99f1-89fe2e7098e6"
ただし、同名の VM が複数あると、UUID が一意にならないので工夫が必要です。
以上。