Nutanix REST API を利用して、Nutanix CE に シングル ノード構成の Nutanix Files ファイル サーバーを作成してみます。今回は、Nutanix とは関係していない外部の Linux クライアントから作業します。
今回の内容です。
環境準備について
今回も、下記のように準備した環境を利用します。
REST API は、Oracle Linux のデフォルト インストールされた curl で利用します。
Linux$ cat /etc/system-release Oracle Linux Server release 7.9
追加インストールした jq も利用します。
Linux$ yum list jq 読み込んだプラグイン:ulninfo インストール済みパッケージ jq.x86_64 1.5-1.0.1.el7 @ol7_addons
操作対象の情報です。
- Prism(CVM)のアドレス: lab-nxce-01.go-lab.jp
- Prism のユーザ: admin(パスワードは例として Nutanix/4u)
- Nutanix Files ファイル サーバーの名前: test-fs-01
前回の投稿と同様、あらかじめ変数に格納しておきます。
Linux$ PRISM=lab-nxce-01.go-lab.jp Linux$ USERPASS='admin:Nutanix/4u' Linux$ FS_NAME=test-fs-01
ネットワーク UUID の確認
ファイル サーバー作成時のパラメータとして指定するので、Prism で作成した AHV ネットワークの UUID を確認しておきます。これは、API v2 /networks の GET メソッドで確認できます。
Linux$ curl -ks -u $USERPASS "https://$PRISM:9440/PrismGateway/services/rest/v2.0/networks/" | jq -r '.entities[] | [.name, .uuid] | @csv' "nw-vlan-20","ec0ced9c-0a64-47d2-9712-22c1835cf529" "nw-vlan-31","f513d008-8d20-4826-893e-5363918a6f46"
ファイル サーバーのパラメータ用意
ファイル サーバーのパラメータを、JSON 形式のファイルを用意しておきます。
test-fs-01.json
ファイル サーバーの作成
API v1 /vfilers の POST メソッドで、ファイル サーバーを作成します。戻り値でタスクの UUID がわかるので、進捗を確認しやすいように変数「TASK」に格納しています。サブ タスクも確認できるように、URI に「include_subtasks_info=true」を追記しています。
Linux$ TASK=$(curl -ks -u $USERPASS -X POST -H "Content-Type: application/json" -d @./test-fs-01.json "https://$PRISM:9440/PrismGateway/services/rest/v1/vfilers")
タスクの進捗は、API v2 /tasks の GET メソッドで確認できます。
Linux$ TASK_UUID=$(echo $TASK | jq -r .taskUuid) Linux$ curl -ks -u $USERPASS "https://$PRISM:9440/api/nutanix/v2.0/tasks/$TASK_UUID?include_subtasks_info=true" | jq -r .
タスクの進捗は、下記のように確認できます。
ファイル サーバーの作成には、いくつかサブ タスクが発生します。
先頭にある FileServerAdd タスクの、percentage_complete が 100%、progress_status が Succeeded になると完了です。
Linux$ curl -ks -u $USERPASS "https://$PRISM:9440/api/nutanix/v2.0/tasks/$TASK_UUID?include_subtasks_info=true" | jq -r . | grep -e operation_type -e percentage_complete -e progress_status "operation_type": "FileServerAdd", "percentage_complete": 100, "progress_status": "Succeeded", "operation_type": "FsDnsOperationsTask", "percentage_complete": 100, "progress_status": "Succeeded", "operation_type": "kVmGroupCreate", "percentage_complete": 100, "progress_status": "Succeeded", "operation_type": "VmCreate", "percentage_complete": 100, "progress_status": "Succeeded", "operation_type": "ConfigureNameServicesTask", "percentage_complete": 100, "progress_status": "Succeeded", "operation_type": "FileServerProtect", "percentage_complete": 100, "progress_status": "Succeeded", "operation_type": "FileServerVmDeploy", "percentage_complete": 100, "progress_status": "Succeeded", "operation_type": "VmChangePowerState", "percentage_complete": 100, "progress_status": "Succeeded", "operation_type": "kVmUpdate", "percentage_complete": 100, "progress_status": "Succeeded",
共有フォルダのパラメータ用意
ついでに、SMB 共有フォルダを作成します。
下記のような JSON ファイルを作成しておきます。
share-01.json
{ "name": "share-01", "maxSizeGiB": 20 }
共有フォルダの作成
共有フォルダを作成するファイル サーバーの、UUID を取得しておきます。
Linux$ FS_UUID=$(curl -ks -u $USERPASS "https://$PRISM:9440/PrismGateway/services/rest/v1/vfilers/?filterCriteria=Name&searchString=${FS_NAME}" | jq -r '.entities[0].uuid')
API v1 /vfilers/${FS_UUID}/shares の POST メソッドで、共有フォルダを作成します。
Linux$ TASK=$(curl -ks -u $USERPASS -X POST -H "Content-Type: application/json" -d @./share-01.json "https://$PRISM:9440/PrismGateway/services/rest/v1/vfilers/${FS_UUID}/shares")
さきほどと同様に、タスクの進捗が確認できます。
Linux$ TASK_UUID=$(echo $TASK | jq -r .taskUuid) Linux$ curl -ks -u $USERPASS "https://$PRISM:9440/api/nutanix/v2.0/tasks/$TASK_UUID?include_subtasks_info=true" | jq -r .
共有フォルダ作成の、ShareAdd タスクが完了したことを確認します。
Linux$ curl -ks -u $USERPASS "https://$PRISM:9440/api/nutanix/v2.0/tasks/$TASK_UUID?include_subtasks_info=true" | jq -r . | grep -e operation_type -e percentage_complete -e progress_status "operation_type": "ShareAdd", "percentage_complete": 100, "progress_status": "Succeeded", "operation_type": "kVolumeDiskCreate", "percentage_complete": 100, "progress_status": "Succeeded", "operation_type": "kVolumeDiskCreate", "percentage_complete": 100, "progress_status": "Succeeded", "operation_type": "kVolumeGroupCreate", "percentage_complete": 100, "progress_status": "Succeeded",
ちなみに、今回作成した環境の削除についてはこちらをどうぞ。
以上。