K Oracle Clusterware用のREST API

この付録では、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