DeployService REST API を使用して、Liberty サーバーを、集合のメンバーとしてデプロイできます。
始める前に
デプロイする
Liberty サーバーを
作成して
パッケージします。
- パッケージする既存のサーバーがない場合は、create コマンドを実行して新規サーバーを作成します。
./server create member1
- パッケージする既存のサーバーがある場合は、パッケージしようとしているサーバーが停止していることを確認します。
- package コマンドを実行してサーバー・パッケージを作成します。
./server package member1
このコマンドは、例えば、member1.zip という名前のサーバー・パッケージを作成します。
ターゲット・ホストが Remote Execution Agent (RXA) 用にセットアップされていることを確認します。Liberty 集合操作用 RXA のセットアップを参照してください。
また、ターゲット・ホストで、ターゲット・デプロイメント・ロケーションに対するオペレーティング・システム権限を持つユーザーの環境 (パス) に、cURL ユーティリティー、
unzip ユーティリティー、および、jar ユーティリティーの Java サポートがあることも確認してください。
このユーザーは、ホストの登録中に --rpcUser に指定されたユーザー (リモート・プロシージャー・コール (RPC) ユーザー) と同じでなければなりません。ホストの登録はステップ 3 で行います。
手順
- collectiveController ステートメントをコントローラーの server.xml ファイルに追加します。user および password の値を、コントローラー管理ユーザー ID およびパスワードに設定します。例えば、コントローラー server.xml ファイル内の <quickStartSecurity userName="admin" userPassword="adminpwd" /> ステートメント中の値を使用します。
<collectiveController user="admin" password="adminpwd" />
- 使用可能なデプロイメント・ルールを確認します。
- 使用可能なデプロイメント・ルールを 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"}
- 必要であれば、DeployRules をコントローラー構成に追加することで、独自のデプロイメント・ルールを作成します。
デプロイ・ルール (deployRule) を参照してください。
- サーバー・パッケージをコントローラーに対して使用可能にします。
以下のいずれかのアクションを実行します。
- 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 は必須です。--hostWritePath の directory 値は、
デプロイメント・ルールに指定された targetDir であるか、または、Liberty サーバーをインストールするホスト上の targetDir の親ディレクトリーでなければなりません。複数の --hostWritePath パラメーターを指定できます (例: --hostWritePath=/dir1 --hostWritePath=/dir2)。
registerHost コマンドおよび updateHost コマンドについて詳しくは、ホスト・コンピューターの Liberty 集合への登録を参照してください。
- 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
状況や結果を取得するには、デプロイメントと同様のステップに従います。