4.3. JBoss EAP でのユーザー開発レイヤーのプロビジョニング
Red Hat から利用可能なレイヤーのプロビジョニングを行うに加え、開発するカスタムレイヤーをプロビジョニングできます。
手順
Galleon Maven プラグインを使用してカスタムレイヤーを構築します。
詳細は、Building Custom Layers for JBoss EAP を参照してください。
- アクセス可能な Maven リポジトリーにカスタムレイヤーをデプロイします。
ユーザー定義のレイヤーとサポートされる JBoss EAP レイヤーを参照するカスタムプロビジョニングファイルを作成し、これをアプリケーションディレクトリーに保存します。
詳細は、Custom Provisioning Files for JBoss EAP を参照してください。
S2I プロセスを実行して、OpenShift で JBoss EAP サーバーをプロビジョニングします。
詳細は、 Building an Application Provisioned with User-developed Layers を参照してください。
4.3.1. JBoss EAP のカスタムレイヤーの構築
カスタムレイヤー機能パックを Maven プロジェクトとして作成します。
- カスタムレイヤーは、少なくともベースレイヤーに依存します。カスタムレイヤーに必要な機能を提供するベースレイヤーを選択します。
Maven プロジェクト内で、
src/main/resources
ディレクトリーにレイヤーコンテンツを作成します。たとえば、PostgreSQL および PostgreSQL データソースのサポートをプロビジョニングするレイヤーを作成するには、
src/main/resources
ディレクトリーにlayers/standalone
サブディレクトリーを作成します。standalone
サブディレクトリーには以下の内容が含まれます。postgresql-driver
このディレクトリーには、以下の内容が含まれる
layer-spec.xml
ファイルが含まれます。<?xml version="1.0" ?> <layer-spec xmlns="urn:jboss:galleon:layer-spec:1.0" name="postgresql-driver"> <feature spec="subsystem.datasources"> <feature spec="subsystem.datasources.jdbc-driver"> <param name="driver-name" value="postgresql"/> <param name="jdbc-driver" value="postgresql"/> <param name="driver-xa-datasource-class-name" value="org.postgresql.xa.PGXADataSource"/> <param name="driver-module-name" value="org.postgresql.jdbc"/> </feature> </feature> <packages> <package name="org.postgresql.jdbc"/> </packages> </layer-spec>
postgresql-datasource
このディレクトリーには、以下の内容が含まれる
layer-spec.xml
ファイルが含まれます。<?xml version="1.0" ?> <layer-spec xmlns="urn:jboss:galleon:layer-spec:1.0" name="postgresql-datasource"> <dependencies> <layer name="postgresql-driver"/> </dependencies> <feature spec="subsystem.datasources.data-source"> <param name="use-ccm" value="true"/> <param name="data-source" value="PostgreSQLDS"/> <param name="enabled" value="true"/> <param name="use-java-context" value="true"/> <param name="jndi-name" value="java:jboss/datasources/${env.POSTGRESQL_DATASOURCE,env.OPENSHIFT_POSTGRESQL_DATASOURCE:PostgreSQLDS}"/> <param name="connection-url" value="jdbc:postgresql://${env.POSTGRESQL_SERVICE_HOST,\ env.OPENSHIFT_POSTGRESQL_DB_HOST}:${env.POSTGRESQL_SERVICE_PORT,\ env.OPENSHIFT_POSTGRESQL_DB_PORT}/${env.POSTGRESQL_DATABASE, env.OPENSHIFT_POSTGRESQL_DB_NAME}"/> <param name="driver-name" value="postgresql"/> <param name="user-name" value="${env.POSTGRESQL_USER, env.OPENSHIFT_POSTGRESQL_DB_USERNAME}"/> <param name="password" value="${env.POSTGRESQL_PASSWORD, env.OPENSHIFT_POSTGRESQL_DB_PASSWORD}"/> <param name="check-valid-connection-sql" value="SELECT 1"/> <param name="background-validation" value="true"/> <param name="background-validation-millis" value="60000"/> <param name="flush-strategy" value="IdleConnections"/> <param name="statistics-enabled" value="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}" /> </feature>
カスタム機能パックの構築に使用される
pom.xml
ファイルでは、JBoss EAP の依存関係を参照してください。<dependency> <groupId>org.jboss.eap</groupId> <artifactId>wildfly-ee-galleon-pack</artifactId>1 <version>7.3.0.GA-redhat-00004</version> <type>zip</type> </dependency>
- 1
- JBoss EAP 拡張パック (JBoss EAP XP) を使用する場合は、この要素の値を
wildfly-galleon-pack
にする必要があります。
これらの依存関係は、Red Hat Maven リポジトリー https://maven.repository.redhat.com/ga/ から入手できます。
-
Galleon Maven プラグインの
build-user-feature-pack
ゴールを使用してカスタムレイヤーを構築します。
関連情報
4.3.2. JBoss EAP のカスタムプロビジョニングファイル
カスタムプロビジョニングファイルは、galleon
サブディレクトリーに保存されている provisioning.xml
というファイル名の XML ファイルです。
以下のコードは、カスタムプロビジョニングファイルを示しています。
<?xml version="1.0" ?> <installation xmlns="urn:jboss:galleon:provisioning:3.0"> <feature-pack location="eap-s2i@maven(org.jboss.universe:s2i-universe)">1 <default-configs inherit="false"/>2 <packages inherit="false"/>3 </feature-pack> <feature-pack location="com.example.demo:my-galleon-feature-pack:1.0 ">4 <default-configs inherit="false"/> <packages inherit="false"/> </feature-pack> <config model="standalone" name="standalone.xml">5 <layers> <include name="cloud-server"/> <include name="my-custom-driver"/> <include name="my-custom-datasource"/> </layers> </config> <options>6 <option name="optional-packages" value="passive+"/> </options> </installation>
- 1
- この要素は、現在の eap-s2i feature-pack をプロビジョニングするようにプロビジョニングプロセスに指示します。ビルダーイメージには単一の機能パックのみが含まれていることに注意してください。
- 2
- この要素は、デフォルト設定を除外するようにプロビジョニングプロセスに指示します。
- 3
- この要素は、デフォルトパッケージを除外するようにプロビジョニングプロセスに指示します。
- 4
- この要素は、
com.example.demo:my-Galleon-feature-pack:1.0
機能パックをプロビジョニングするようにプロビジョニングプロセスに指示します。子要素は、デフォルトの設定およびデフォルトパッケージを除外するようプロセスに指示します。 - 5
- この要素は、カスタムスタンドアロン設定を作成するようにプロビジョニングプロセスに指示します。この設定には、
cloud-server
ベースレイヤーと、com.example.demo:my-galleon-feature-pack:1.0
機能パックのmy-custom-driver
およびmy-custom-datasource
カスタムレイヤーが含まれます。 - 6
- この要素は、JBoss EAP モジュールのプロビジョニングを最適化するようプロビジョニングプロセスに指示します。
4.3.3. ユーザー開発のレイヤーでプロビジョニングされるアプリケーションのビルド
カスタムプロビジョニングファイルを含むディレクトリーからアプリケーションを構築する場合、S2I ビルドプロセスはプロビジョニングファイルを検出し、指示どおりに JBoss EAP サーバーをプロビジョニングします。
前提条件
- ユーザーが開発したレイヤーはアクセス可能な Maven リポジトリーに存在する必要があります。
- アプリケーションディレクトリーには、ユーザーが開発したレイヤーと、それらのレイヤーを含む機能パックを参照する有効なプロビジョニングファイルが含まれている必要があります。
手順
標準の S2I ビルドコマンドを入力してアプリケーションをビルドします。
たとえば、以下のカスタムプロビジョニングファイルをアプリケーションディレクトリーに作成することを想定します。
<?xml version="1.0" ?> <installation xmlns="urn:jboss:galleon:provisioning:3.0"> <feature-pack location="eap-s2i@maven(org.jboss.universe:s2i-universe)"> <default-configs inherit="false"/> <packages inherit="false"/> </feature-pack> <feature-pack location="com.example.demo:my-galleon-feature-pack:1.0"> <default-configs inherit="false"/> <packages inherit="false"/> </feature-pack> <config model="standalone" name="standalone.xml"> <layers> <include name="cloud-server"/> <include name="my-custom-driver"/> <include name="my-custom-datasource"/> </layers> </config> <options> <option name="optional-packages" value="passive+"/> </options> </installation>
以下のコマンドは、
com.example.demo:my-Galleon-feature-pack:1.0
機能パックを使用してアプリケーションを構築します。これには、my-custom-driver
およびmy-custom-datasource
レイヤーが含まれます。生成されるアプリケーションの名前はeap-my-custom-db
です。データベースへの接続は環境変数を使用して設定されます。oc build my-app \ -e DEMO_DB=demo \ -e DEMO_PASSWORD=demo \ -e DEMO_HOST=127.0.0.1 \ -e DEMO_PORT=5432 \ -e DEMO_USER=demo \ eap-my-custom-db
ユーザー demo
とパスワード demo
を使用して、ポート 5432 でデータベースにログインできます。