NTNX>日記

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

Nutanix CE に Nutanix Files を展開する。(シングル ノード構築 REST API 編)

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

gist.github.com

ファイル サーバーの作成

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 .

タスクの進捗は、下記のように確認できます。

f:id:gowatana:20210804205025p:plain

ファイル サーバーの作成には、いくつかサブ タスクが発生します。

先頭にある 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",

 

ちなみに、今回作成した環境の削除についてはこちらをどうぞ。

以上。

©2023 gowatana
クリエイティブ・コモンズ・ライセンスこの 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。