K Oracle Clusterware用のREST API
Oracle Clusterware用のREST APIについて
Oracle Clusterware用のRESTアプリケーション・プログラミング・インタフェース(API)を使用すると、Oracle Cloud内、リモートの物理的な場所、またはローカルにプロビジョニングされているかどうかに関係なく、クラスタ上でリモートでコマンドを実行できます。RESTインタフェース・コマンドのリモート実行により、出力、エラー・コード、実行期間など、その実行に関する情報を取得できます。RESTインタフェースでは、Oracle ClusterwareのSRVCTLおよびCRSCTLコマンドライン・インタフェース(CLI)のセキュア・サポートが提供されます。
注意:
Oracle Clusterware用のREST APIはWindows環境ではサポートされません。
スタート・ガイド
Oracle Clusterware用のREST APIでは、CDPクロス・クラスタ・ドメイン・プロトコル(CDP)デーモンがクラスタのすべてのSCAN VIPで実行されている必要があります。CLIを非同期ジョブとして実行するためのRESTエンドポイントが存在します。後でRESTエンドポイントからコマンドの出力にアクセスし、戻りコードと実行時間を取得できます。
デフォルトでREST APIを安全にするために、クラスタ内のノードのIPアドレス以外からのすべてのリクエストが拒否されます。CDPデーモンはクラスタ内のノードを監視し、IPのいずれとも一致しないCLIエンドポイントへのリクエストをすべて拒否します。クラスタの外部からリクエストを行う機能をサポートするために、srvctl
modify
cdp
コマンドを実行して、IPまたはネットワークのリストをCIDR形式で提供できます。
admin
パスワードを変更するには、次のコマンドを実行します。
$ srvctl stop cdp
$ echo "myAdminPasswd" > /tmp/a
$ srvctl modify cdp -passfile_admin /tmp/a
クラスタの外部からの接続を有効にするには、次のコマンドを実行します。
$ srvctl start cdp
$ srvctl modify cdp -allow "ip/network1,ip/network2,.."
次のコマンドで構成情報を表示できます。
$ srvctl config cdp
構成情報を表示するときにパスワードは表示されません。
RESTエンドポイント
-
指定したジョブを削除する
メソッド: Delete
パス:
/grid/cmd/v1/cmd/jobs/jobId
-
CLIを実行する
メソッド: Post
パス:
/grid/cmd/v1/cmd/exec
-
ジョブ・リソースのリストを返す
メソッド: Get
パス:
/grid/cmd/v1/cmd/jobs
-
共通リソースを返す
メソッド: Get
パス:
/grid/cmd/v1/cmd
-
現在のジョブのステータスを返す
メソッド: Get
パス:
/grid/cmd/v1/cmd/jobs/jobId
例
次に、Oracle Clusterware用のREST APIの使用例をいくつか示します。
例K-1 すべてのホームのリストの取得
curl -k -X GET https://scan-name:port/grid/cmd/v1/cmd/ --user admin:myAdminPasswd
例K-2 ジョブの作成とステータス#1の監視
curl -k -X POST \
https://scan-name:port/grid/cmd/v1/cmd/exec \
'-H "accept: text/plain,text/javascript,application/json"' \
'-H "content-type: application/vnd.oracle.resource+json;type=singular"' \
--user admin:myAdminPasswd \
'-d {"command" : ["crsctl", "stat", "res", "-t"], "runAsUser":"osUser", "userPassword":"osPasswd"}'
curl -k -X GET https://scan-name:port/grid/cmd/v1/cmd/jobs/myJobId --user admin:myAdminPasswd
例K-3 ジョブの作成とステータス#2の監視
curl -k -X POST \
https://scan-name:port/grid/cmd/v1/cmd/exec \
'-H "accept: text/plain,text/javascript,application/json"' \
'-H "content-type: application/vnd.oracle.resource+json;type=singular"' \
--user admin:myAdminPasswd \
'-d {"command" : [ "srvctl","config", "cdp" ], "runAsUser" : "osUser", "userPassword" : "osPasswd"}'
curl -k -X GET https://scan-name:port/grid/cmd/v1/cmd/jobs/myJobId --user admin:myAdminPasswd
例K-4 ジョブの作成とステータス#3の監視
curl -k -X POST \
https://scan-name:port/grid/cmd/v1/cmd/exec \
'-H "accept: text/plain,text/javascript,application/json"' \
'-H "content-type: application/vnd.oracle.resource+json;type=singular"' \
--user admin:myAdminPasswd \
'-d {"command" : ["srvctl", "config", "scan"], "runAsUser":"osUser", "userPassword":"osPasswd", "jobExpiry":300}'
curl -k -X GET https://scan-name:port/grid/cmd/v1/cmd/jobs/myJobId --user admin:myAdminPasswd
例K-5 すべてのジョブのステータスの監視
curl -k -X GET \
https://scan-name:port/grid/cmd/v1/cmd/jobs/ --user admin:myAdminPasswd
例K-6 ジョブの削除
curl -k -X DELETE \
https://scan-name:port/grid/cmd/v1/cmd/jobs/myJobId --user admin:myAdminPasswd
例K-7 削除されたジョブの削除確認
curl -k -X GET \
https://scan-name:port/grid/cmd/v1/cmd/jobs/myJobId --user admin:myAdminPasswd