Nutanix Database Service(NDB)の REST API で DB をプロビジョニングやクローン作成する場合には、プロファイルを UUID で指定します。
しかし、NDB の Web UI からはプロファイル ID を確認できないので、REST API でまとめて取得してみます。
今回の環境
今回も、これまで利用してきた自宅の NDB Server(lab-ndb-01.go-lab.jp)を利用します。
REST API は、Linux マシンの curl と jq(これは追加インストール)を利用して実行します。
[root@lab-linux-02 ~]# cat /etc/oracle-release Oracle Linux Server release 8.7 [root@lab-linux-02 ~]# rpm -qf $(which curl) curl-7.61.1-25.el8.x86_64
jq は追加インストールしてあります。Oracle Linux 8 ではデフォルトで ol8_appstream(Application Stream)リポジトリからインストールできますが、他の Linux ディストリビューションでは EPEL リポジトリなどからインストールできるはずです。
[root@lab-linux-02 ~]# dnf install -y jq [root@lab-linux-02 ~]# rpm -qf $(which jq) jq-1.6-3.el8.x86_64
REST API でのプロファイル情報の取得
NDB REST API のリファレンスは、NDB Web UI の REST API Explorer か、下記リファレンスで確認できます。そしてGET /profiles で情報取得できるとわかります。
curl のオプション指定を簡潔にするため、NDB Server のアドレスと認証情報を変数に格納しておきます。
[root@lab-linux-02 ~]# NDB=lab-ndb-01.go-lab.jp [root@lab-linux-02 ~]# CRED='admin:nutanix/4u'
プロファイルは、下記のようになコマンドラインで取得できます。
[root@lab-linux-02 ~]# curl -ks -u "$CRED" --url "https://$NDB/era/v0.9/profiles"
さらに下記のように Python や jq などを利用することで、出力される JSON データを整形できます。
Python3
[root@lab-linux-02 ~]# curl -ks -u "$CRED" --url "https://$NDB/era/v0.9/profiles" | python3 -m json.tool
jq
[root@lab-linux-02 ~]# curl -ks -u "$CRED" --url "https://$NDB/era/v0.9/profiles" | jq -r .
ただし、このままではプロファイル全体の情報取得になるため、大量に出力されてしまいます。
[root@lab-linux-02 ~]# curl -ks -u "$CRED" --url "https://$NDB/era/v0.9/profiles" | python3 -m json.tool | nl | tail 3147 "UNDO_TABLESPACE": "1024", 3148 "TEMP_TABLESPACE": "256", 3149 "PROCESSES": "300", 3150 "MEMORY_TARGET": "512", 3151 "NLS_TERRITORY": "AMERICA" 3152 } 3153 } 3154 ] 3155 } 3156 ]
そこで jq コマンドを利用して、下記に絞った出力にしてみます。
- プロファイル ID
- プロファイルの種類
- プロファイル名
Compute、Database_Parameter、Network、Software のほかに、Storage プロファイルも作成されていることがわかります。
[root@lab-linux-02 ~]# curl -ks -u "$CRED" --url "https://$NDB/era/v0.9/profiles" | jq -r '.[] | [.i d, .type, .name] | @csv' "a1c3033d-f999-47b2-8565-feced1a33503","Storage","DB_DEFAULT_STORAGE_PROFILE" "1d907076-4653-4e4e-a870-11d1e4e07f35","Compute","DEFAULT_OOB_COMPUTE" "70700ae6-fa63-4841-8b7a-183f03806b55","Compute","DEFAULT_OOB_SMALL_COMPUTE" "108cd28b-385a-4d0d-adec-eb81dcf5d4a0","Database_Parameter","DEFAULT_ORACLE_PARAMS" "038103f2-6704-45a0-a297-33d066463bab","Database_Parameter","DEFAULT_POSTGRES_PARAMS" "694dd3a8-8297-4477-a2d5-3958960f368f","Database_Parameter","DEFAULT_POSTGRES_HA_PARAMS" "537aa45e-aa65-44c3-8c94-4f1ec11846f4","Database_Parameter","DEFAULT_SQLSERVER_INSTANCE_PARAMS" "389fdf15-c81b-4aa7-b7d5-d6c11c597246","Database_Parameter","DEFAULT_SQLSERVER_DATABASE_PARAMS" "a09c9eb3-9c5f-4d5f-a676-86194cca76d5","Database_Parameter","DEFAULT_MARIADB_PARAMS" "06991466-c839-459a-8fce-9a42b3a61cb1","Database_Parameter","DEFAULT_MYSQL_PARAMS" "cb986891-4bb5-4bd5-b58d-22dadb98a4e6","Database_Parameter","DEFAULT_SAPHANA_PARAMS" "de595b57-f8b2-4f7b-ba60-7c4f56bc9b20","Database_Parameter","DEFAULT_MONGODB_PARAMS" "b24d694f-db0a-4ab0-b29f-5099945337c4","Network","DEFAULT_OOB_ORACLE_NETWORK" "f910bb46-ec1f-41a2-8618-bdc0fdec763f","Network","DEFAULT_OOB_MONGODB_NETWORK" "930a292f-788e-4f86-bc05-42b01071eccd","Network","DEFAULT_OOB_SQLSERVER_NETWORK" "621b5be0-12e7-4e4c-8018-7c22b6733f7d","Network","DEFAULT_OOB_MARIADB_NETWORK" "1005a5ea-b208-4f75-8316-a32592fc1498","Network","DEFAULT_OOB_POSTGRESQL_NETWORK" "cb83b2c1-9c8a-4052-9f74-29ea8b2c4954","Network","DEFAULT_OOB_MYSQL_NETWORK" "33e0631b-0f20-4759-98f7-50affe1261fe","Software","POSTGRES_10.4_OOB" "d1a19fcb-aa82-4ee1-b177-c4ee8c2965d2","Software","POSTGRES_10.4_HA_ENABLED_OOB" "ef500e20-b3d3-4885-9d69-011455fbfae5","Software","MARIADB_10.3_OOB" "d05fa7eb-5703-4da8-bce4-b88cf53a203f","Software","MYSQL_8.0_OOB" "cc1bfb97-bfe3-4cb9-bff9-7be346b54b91","Software","MONGODB_4.4_OOB" "241340d5-5354-48e2-a6df-facc59d4530e","Software","oracle-19c-si" "aaa1de12-9fbb-4b1d-badb-cc9d4cc6b94a","Compute","compute_2cpu_8mem" "612f2d7c-7b82-477b-a729-9f0aec9ed6d5","Database_Parameter","db-param-profile-oracle-01" "ec9327ce-04d5-4bc3-b470-8535da548082","Database_Parameter","db-param-profile-oracle-02"
これで、API 操作で必要になるプロファイルの UUID(.id)が確認できるはずです。
以上。