Red Hat Training
A Red Hat training course is available for Red Hat JBoss Operations Network
第16章 例: バンドルを使用したアプリケーションのデプロイ(JBoss EAP 4、5、および 6)
バンドルは、更新されたアプリケーションを JBoss EAP 6 サーバーにデプロイする非常にクリーンで簡単な方法です。バンドルシステムは、特定のパッケージの複数のバージョンを維持し、それらのバージョンを指定された互換性のあるグループにデプロイできます。これは、安定したバージョンを実稼働サーバーにデプロイでき、開発バージョンをテストマシンにデプロイできるため、アプリケーションのライフサイクルに最適なワークフローになります。
16.1. 新規アプリケーションの作成
cliRoot/rhq-remoting-cli-4.9.0.JON320GA/samples/modules
ディレクトリーの jbossas.js
スクリプトは、バンドルバージョンと定義を迅速に作成し、指定の JBoss サーバーにデプロイするカスタム関数のセットを定義します。
この
jbossas.js
スクリプトでは、関数をサポートするために util.js
および bundles.js
スクリプトが必要です。これらはすべて cliRoot/rhq-remoting-cli-4.9.0.JON320GA/samples/modules
ディレクトリーから自動的に読み込まれます。
deploy-to-and-restart-JBAS.js
スクリプトによって、という関数が定義されます。 createAppAndRestartJBAS
これにより、バンドルが作成され、デプロイされます。関数は 7 つのパラメーターを取ります。
- バンドルアーカイブファイルへのパス。
- バンドル設定に必要なトークンまたは変数が含まれる設定オブジェクト。この例では、プロパティーは渡されず、値は null になります。設定の詳細については、
bundles.js
ファイルのコメントに表示され、一般的な設定情報が表示され 「シンプル設定プロパティーの変更」 ます。 - バンドルをデプロイする互換性のあるグループの名前。
- バンドル宛先の名前。
- バンドル宛先の説明。
- バンドルをデプロイするベースディレクトリー、およびオプションでバンドルをデプロイするサブディレクトリー。
例:
rhqadmin@localhost:7080$ var bundleZipFile = /export/bundles/myBundle.zip rhqadmin@localhost:7080$ var deploymentConfiguration = null rhqadmin@localhost:7080$ var groupName = "JBoss EAP 6 Group" rhqadmin@localhost:7080$ var destinationName = "My App - JBoss EAP 6 Destination" rhqadmin@localhost:7080$ var destinationDescription = "For my application" rhqadmin@localhost:7080$ var baseDirName = "Deploy Directory" rhqadmin@localhost:7080$ var deployDir = "helloWorldApp" rhqadmin@localhost:7080$ createAppAndRestartJBAS(bundleZipFile, deploymentConfiguration, groupName, destinationName, destinationDescription, baseDirName, deployDir)
deploy-to-and-restart-JBAS.js
スクリプトには、サポートを提供する多くのプライベート関数が定義されています。 createAppAndRestartJBAS
関数。これらは deploy-to-and-restart-JBAS.js
ファイルのコメントで説明されています。
注記
baseDirName 変数 の 値は or である必要があり Deploy Directory Profile Directoryます。この 2 つの場所は、スクリプトがアクセスする指定の JBoss EAP リソースの接続情報に基づいて識別されます。
The
createAppAndRestartJBAS
関数には、リソースグループの検索、バンドルの作成、およびグループの JBoss サーバーを再起動する 3 つの部分があります。
最初の部分は、特定のグループをグループ名で検索し、単一のリソースグループのみに一致する必要があります。そうでない場合は、エラーを返します。
function createAppAndRestartJBAS(bundleZipFile, deploymentConfiguration, groupName, destinationName, destinationDescription, baseDirName, deployDir) { var gcrit = new ResourceGroupCriteria; gcrit.addFilterName(groupName); gcrit.fetchResourceType(true); var groups = ResourceGroupManager.findResourceGroupsByCriteria(gcrit); if (groups.empty) { throw "Could not find a resource group called " + groupName; } else if (groups.size() > 1) { throw "There are more than 1 groups called " + groupName; } var group = groups.get(0); var targetResourceType = group.resourceType;
検索手順の一部は、指定の互換性のあるグループのリソースタイプを取得することです。その後、そのリソースタイプは、グループに関連付けられたバンドル宛先の作成に使用されます。
次の部分はバンドルを作成し、サーバーリソースを再起動します。
var deployFn = function(restartFn) {
バンドルデプロイメントの最初の部分は、バンドルアーカイブをアップロードし、JBoss ON 設定でバンドルバージョンを作成します。
var bundleVersion = createBundleVersion(bundleZipFile);
次に、宛先を作成します。この宛先は、バンドルをデプロイする場所(ベースディレクトリーおよびデプロイメントディレクトリー)、互換性のあるグループおよびバンドルバージョンに関連付けられます。
var destination = BundleManager.createBundleDestination(bundleVersion.bundle.id, destinationName, destinationDescription, baseDirName, deployDir, group.id);
宛先とバージョンが定義されたら、ターゲットリソースグループに保存してデプロイできます。
var deployment = deployBundle(destination,bundleVersion, deploymentConfiguration, "Web application", false); if (deployment.status != BundleDeploymentStatus.SUCCESS) { throw "Deployment wasn't successful: " + deployment; }
デプロイメントが完了すると、スクリプトはグループメンバー(スクリプトのヘルプ機能のいずれかで定義されます
deploy-to-and-restart-JBAS.js
)を繰り返し処理し、各リソースを再起動します。その後、デプロイメント情報を出力します。
restartFn(group); return deployment; };
deploy-to-and-restart-JBAS.js
スクリプトは、サポートされるバージョンの JBoss EAP 4、5、または 6 にコンテンツをデプロイできます。バンドルシステムは、グループのリソースタイプに基づいて、リソースプラグインで定義された設定を使用します。再起動操作では、JBoss EAP の各バージョンごとに異なる再起動機能を定義します。
if (targetResourceType.plugin == "JBossAS" && targetResourceType.name == "JBossAS Server") { return deployFn(_restartAS4); } else if (targetResourceType.plugin == "JBossAS5" && targetResourceType.name == "JBossAS Server") { return deployFn(_restartAS5); } else if (targetResourceType.plugin == "JBossAS7" && (targetResourceType.name == "JBossAS7 Standalone Server" || targetResourceType.name == "JBossAS-Managed")) { return deployFn(_restartAS7); } throw "The resource group the destination targets doesn't seem to be a JBoss AS server group."; }