For LINUX platformsFor Windows platforms[16.0.0.3 and later]

デプロイメント REST API を使用した Liberty サーバーのデプロイ

DeployService REST API を使用して、Liberty サーバーを、集合のメンバーとしてデプロイできます。

始める前に

デプロイする Liberty サーバーを作成してパッケージします。
  1. パッケージする既存のサーバーがない場合は、create コマンドを実行して新規サーバーを作成します。
    ./server create member1
  2. パッケージする既存のサーバーがある場合は、パッケージしようとしているサーバーが停止していることを確認します。
  3. package コマンドを実行してサーバー・パッケージを作成します。
    ./server package member1

    このコマンドは、例えば、member1.zip という名前のサーバー・パッケージを作成します。

ターゲット・ホストが Remote Execution Agent (RXA) 用にセットアップされていることを確認します。Liberty 集合操作用 RXA のセットアップを参照してください。

また、ターゲット・ホストで、ターゲット・デプロイメント・ロケーションに対するオペレーティング・システム権限を持つユーザーの環境 (パス) に、cURL ユーティリティー、 unzip ユーティリティー、および、jar ユーティリティーの Java サポートがあることも確認してください。 このユーザーは、ホストの登録中に --rpcUser に指定されたユーザー (リモート・プロシージャー・コール (RPC) ユーザー) と同じでなければなりません。ホストの登録はステップ 3 で行います。

手順

  1. collectiveController ステートメントをコントローラーの server.xml ファイルに追加します。user および password の値を、コントローラー管理ユーザー ID およびパスワードに設定します。例えば、コントローラー server.xml ファイル内の <quickStartSecurity userName="admin" userPassword="adminpwd" /> ステートメント中の値を使用します。
    <collectiveController user="admin" password="adminpwd" />
  2. 使用可能なデプロイメント・ルールを確認します。
    1. 使用可能なデプロイメント・ルールを JSON 構造で返す REST API を起動します。 REST API を起動できるツールを使用して、使用可能なデプロイメント・ルールを取得します。
      GET https://controller_host:controller_port/ibm/api/collective/v1/deployment/rule 

      この起動により、次のような JSON 構造のデプロイメント・ルールが返されます。

      {
      -"id": "Liberty Server Rule",
      -"description": "Deploy rule for Liberty servers.",
      -"type": "Liberty",
      -"deployCommands": "curl -X GET https://${wlp.admin.host}:${wlp.admin.port}/IBMJMXConnectorREST/file/${serverPackageDir}%2F${serverPackage} --user ${wlp.admin.user}:${wlp.admin.password} -k --create-dirs -o ${targetDir}/${serverPackage}.tmp --verbose && unzip ${targetDir}/${serverPackage}.tmp -d ${targetDir}/${serverPackage} && ${targetDir}/${serverPackage}/${binDir}/collective join ${serverName} --host=${wlp.admin.host} --port=${wlp.admin.port} --user=${wlp.admin.user} --password=${wlp.admin.password} --keystorePassword=${keystorePassword} --hostName=${wlp.deploy.host} --useHostCredentials --createConfigFile=${targetDir}/${serverPackage}/wlp/usr/servers/${serverName}/configDropins/defaults/additionalConfig.xml --autoAcceptCertificates",
      -"undeployCommands": "${targetDir}/${serverPackage}/${binDir}/server stop ${serverName}; ${targetDir}/${serverPackage}/${binDir}/collective remove ${serverName} --host=${wlp.admin.host} --port=${wlp.admin.port} --user=${wlp.admin.user} --password=${wlp.admin.password} --autoAcceptCertificates --hostName=${wlp.deploy.host}",
      -"startCommands": "${targetDir}/${serverPackage}/${binDir}/server start ${serverName}",
      -"stopCommands": "${targetDir}/${serverPackage}/${binDir}/server stop ${serverName}",
      -"restartCommands": "${targetDir}/${serverPackage}/${binDir}/server stop ${serverName} && ${targetDir}/${serverPackage}/${binDir}/server start ${serverName}",
      -"inputVariables": [
      -{
      -"name": "targetDir",
      -"type": "filePath",
      -"description": "The target directory for the Liberty server package to be installed.",
      -"displayName": "Target Directory"},
      -{
      -"name": "keystorePassword",
      -"type": "password",
      -"description": "Password for keystores of the deployed server",
      -"displayName": "Keystore Password"},
      -{
      -"name": "serverPackage",
      -"type": "file",
      -"description": "Name of the Liberty server package to install.",
      -"displayName": "Server Package File"},
      -{
      -"name": "serverPackageDir",
      -"type": "filePath",
      -"description": "Location of directory on the controller containing the server package to deploy.",
      -"displayName": "Package directory"}],
      -"name": "Liberty Server",
      -"default": true,
      -"runtimeTypes": [
      -{
      -"displayName": "Liberty"}],
      -"packageType": "Server Package"}
    2. 必要であれば、DeployRules をコントローラー構成に追加することで、独自のデプロイメント・ルールを作成します。 デプロイ・ルール (deployRule) を参照してください。
    3. サーバー・パッケージをコントローラーに対して使用可能にします。

      以下のいずれかのアクションを実行します。

      • サーバー・パッケージを、デフォルト readDir ディレクトリー (${wlp.install.dir}${wlp.user.dir}、および ${server.output.dir}) のいずれか、または、デフォルト readDir ディレクトリーのサブディレクトリーに置きます。
      • サーバー・パッケージのロケーションを指す remoteFileAccess ステートメントをコントローラー server.xml ファイルに追加します。最初の readDir ステートメントが、サーバー・パッケージのロケーションを指定します。このディレクトリーは、ステップ 4 で deployService デプロイメント用に指定する serverPackageDir 入力変数です。serverPackageDir ディレクトリーは、コントローラー・ホスト上にあります。その次の 3 つの readDir ステートメントは、デフォルト readDir ディレクトリーを再び使用可能化します。以下に例を示します。
        <remoteFileAccess>
           <readDir>/tmp/serverPackageDir</readDir>
           <!-- The following statements are required to re-enable the default readDir directories. -->
           <readDir>${wlp.install.dir</readDir>
           <readDir>${wlp.user.dir}</readDir>
           <readDir>${server.output.dir}</readDir>
        </remoteFileAccess>
  3. Liberty サーバーのインストール先となるホストを集合コントローラーに登録します。

    ホストを登録すると、集合コントローラーがそのホスト上のファイル、コマンド、およびその他のリソースにアクセスできるようになります。 registerHost コマンドを使用して、ターゲット・ホストを登録します。 ホストが既に登録されている場合は、updateHost コマンドを使用して登録情報をリセットすることができます。

    重要: 集合 registerHost コマンドまたは updateHost コマンドは、後でメンバー・サーバーのデプロイに使用するユーザーで実行するようにしてください。例えば、このコマンドを root ユーザーで実行し、後で別のユーザーとしてメンバーをデプロイすると、DeployService にはファイルを /root/wlp ディレクトリーにプッシュする権限がないため、デプロイメントが失敗します。
    collective registerHost targetHost --host=controllerHost --port=controllerHTTPSPort 
    --user=controllerAdmin --password=controllerAdminPassword --rpcUser=osUser --rpcUserPassword=osUserPassword --autoAcceptCertificates --hostWritePath=targetDir
    • --host--port--user、および --password は必須です。これらのパラメーターの値を見つけるには、コントローラーの server.xml ファイルを参照してください。
    • リモート・ターゲット・ホストが SSH をサポートしない場合、または、Linux または Windows オペレーティング・システム上のターゲット・ホストなどで SSH 鍵を使用したくない場合は、--rpcUser および --rpcUserPassword は必須です。--rpcUser をオペレーティング・システムのログイン・ユーザーに設定し、 --rpcUserPassword をパスワードに設定してください。--rpcUser で指定するユーザーには、ターゲット・デプロイメント・ロケーションへのオペレーティング・システムの権限が必要です。
    • --autoAcceptCertificates は必須です。
    • --hostWritePath=directory は必須です。--hostWritePathdirectory 値は、 デプロイメント・ルールに指定された targetDir であるか、または、Liberty サーバーをインストールするホスト上の targetDir の親ディレクトリーでなければなりません。複数の --hostWritePath パラメーターを指定できます (例: --hostWritePath=/dir1 --hostWritePath=/dir2)。

    registerHost コマンドおよび updateHost コマンドについて詳しくは、ホスト・コンピューターの Liberty 集合への登録を参照してください。

  4. Liberty サーバーをデプロイします。

    REST API を起動できるツールを使用して、Liberty サーバーをデプロイします。デプロイメント・ルールに、起動の入力値 (例えば、使用する Liberty サーバー) を指定できる変数が含まれています。戻り本文には、状況や結果の要求に使用できるトークンが含まれています。

    POST https://controller_host:controller_port/ibm/api/collective/v1/deployment/deploy
    
    {
       "rule":"Liberty Server Rule",
       "hosts":["target_host_name"],
       "variables": [
          { "name":"serverPackage","value":"member.zip" },
          { "name":"targetDir","value":"%2Fhome%2Fszhou%2Fdeploy" },
          { "name":"keystorePassword","value":"password" },
          { "name":"serverPackageDir","value":"%2Fusr%2Ftest%2Fsource" }
       ]
    }
    重要: targetDir 変数および serverPackageDir 変数は、UTF-8 エンコードのディレクトリー・パスです。serverPackageDir 変数は、集合コントローラー上の Liberty サーバー・パッケージ ZIP ファイルのロケーションです。

    {"id":3} のように表示される戻りトークンを使用して、状態や結果を取得します。 出力は JSON 形式で取得できます。

次のタスク

デプロイメントの状況や結果を要求して確認します。

  • 要求したデプロイメント操作のデプロイメント・トークンのリストを取得します。
    GET https://controller_host:controller_port/ibm/api/collective/v1/deployment/deploy
  • デプロイメント操作の簡略状況を取得します。{token} には、ステップ 6 で得られたトークンを使用します。したがって、ステップ 6 での戻りトークンが {"id":3} の場合、{token} には 3 を使用します。
    GET https://controller_host:controller_port/ibm/api/collective/v1/deployment/{token}/status 
    デプロイメント中であれば、API は次のように IN_PROGRESS を返します。
    {"status":{"target_host":"IN_PROGRESS"}}
    デプロイメント後であれば、API は次のように FINISHED を返します。
    {"status":{"target_host":"FINISHED"}}

    また、デプロイメントに問題があった場合、取得した最終状況が ERROR であることがあります。次の情報を使用して完全な結果を取得します。返された stdout および stderr の情報は、問題の診断に役立ちます。

  • デプロイメント操作の完全な結果を取得します。{token} には、ステップ 6 で得られたトークンを使用します。したがって、ステップ 6 での戻りトークンが {"id":3} の場合、{token} には 3 を使用します。
    GET https://controller_host:controller_port/ibm/api/collective/v1/deployment/{token}/results
    デプロイメント完了後であれば、結果には操作に関する情報が含まれています。以下の例は、FINISHED の場合の結果を示しています。
    {"results":[{"host_name":"target_host","status":"FINISHED","result":0,"stdout":"deployment_stdout", "stderr":"deployment_stderr", "deployedArtifactName":"serverName_from_inputVars", "deployedUserDir":"target_host_directory_for_deployed_server"}]}
Liberty サーバーをアンデプロイします。デプロイ・ルールを指定する必要はありません。デプロイメントで使用されるルールはデプロイ時に保管されました。 そのアンデプロイメント用のルールを使用できます。ホスト名、ユーザー・ディレクトリー、およびサーバー名からなるサーバー・タプルを使用して、サーバーをアンデプロイします。このタプルは、Admin Center の探索ツール内のサーバー・ページに表示されます。
  • Liberty サーバーをアンデプロイします。
    POST https://controller_host:controller_port/ibm/api/collective/v1/deployment/undeploy
    {     
       "host": "myHostName",
       "userDir":"myUserDir",     
       "serverName":"myServerName"
    }
  • アンデプロイメント操作用のトークンのリストを取得します。
    GET https://controller_host:controller_port/ibm/api/collective/v1/deployment/undeploy
    状況や結果を取得するには、デプロイメントと同様のステップに従います。

トピックのタイプを示すアイコン タスク・トピック

ファイル名: twlp_deployservice_liberty.html