Nutanix Database Service(NDB)での PostgreSQL の DB プロビジョニングを、REST API から実行してみます。今回は、下記の投稿で実施した PostgreSQL DB(と DB サーバ VM) のプロビジョニングと同等の処理を Linux の curl で実行してみます。
今回の内容です。
構成のイメージです。
1. API スクリプトの生成
以前の投稿 と同様に、NDB Web UI で DB のプロビジョニングを進めます。
「データベース」→「ソース」画面を開いて、「プロビジョン」→「PostgreSQL」→「インスタンス」をクリックします。
ひたすらパラメータを入力してウィザードを進めます。
1) データベース サーバー VM
2) インスタンス
3) タイムマシン
最後の画面では、プロビジョンをクリックせず「同等の API」ボタンをクリックします。
これで、ここまでのウィザードで入力したパラメータを REST API に置き換えたスクリプトが表示されます。API に渡す JSON データだけでなく、下記の言語でのスクリプトも生成されます。
- shell(cURL)
- Python
- Go Lang
- JavaScript
- PowerShell
今回は、cURL(shell)のスクリプトをダウンロードしておきます。デフォルトでは、era_curl_script.sh という名前でダウンロードされるはずです。
もしくはクリップボードにコピーしておくこともできます。
スクリプトを取得したら、プロビジョニング処理は実行せずに「X」ボタンなどでウィザードを終了しておきます。
2. スクリプト(curl コマンド)の準備
NDB Web UI で生成されたシェル スクリプトを NDB とは関係しない Linux マシンに配置してあります。生成されたスクリプトには curl のオプションや HTTP のヘッダなども指定された状態で生成されているので、今回は NDB Server の認証情報のみ書き換えます。
これからファイルの一部を編集するので、cp でコピーしておきます。
[root@lab-linux-02 ~]# cp era_curl_script.sh provision_pgsql_db.sh
そして、NDB Web UI の認証情報を書き換えておきます。
[root@lab-linux-02 ~]# vi provision_pgsql_db.sh
認証情報は、下記の部分のみです。例では、認証情報として下記を指定しています。もともとのスクリプトにある「-H 'Authorization: Basic '」に 「ゆーざ:パスワード」を Base64 エンコードした文字列を指定できますが、今回は見ためがわかりやすい平文指定にしています。
- admin
- nutanix/4u
[root@lab-linux-02 ~]# diff era_curl_script.sh provision_pgsql_db.sh 5c5 < -H 'Authorization: Basic ' \ --- > -u 'admin:nutanix/4u' \
結果として、スクリプトは下記のような内容になっています。
このうち、-d オプションで指定さている JSON データは、整形すると下記のようになっています。
3. スクリプトの実行
それでは、スクリプトを実行してみます。
[root@lab-linux-02 ~]# bash provision_pgsql_db.sh {"name":"Provision database 'pgsql-02'","workId":"d6ea7176a0f69cb926754338e245a2ab3c17f754747a5cd62c21c91d62171547","operationId":"cfa68718-77f4-4254-bdd8-ca8f444774fc","dbserverId":"3d934ff6-746a-45e5-a9ca-750f34648381","message":null,"entityId":"47ab2dbb-e753-422c-984f-1ded0361f59c","entityName":"pgsql-02","entityType":"ERA_DATABASE","status":"success","associatedOperations":null,"dependencyReport":null}
NDB Web UI でも、DB のプロビジョニングが開始されたことが確認できます。
しばらく待つと、DB のプロビジョニングが完了します。
Web UI での操作と同様に、DB サーバ VM と DB がプロビジョニングされました。
以上。