原文はこちら。
https://blogs.oracle.com/weblogicserver/make-weblogic-domain-provisioning-and-deployment-easy
Oracle WebLogic Deploy Tooling(WDT)を使うと、WebLogic Serverドメインのプロビジョニングとアプリケーションのデプロイ自動化が容易になります。WDTでは、メンテナンスが必要なWLSTスクリプトを作成するのではなく、ドメインやアプリケーション、そしてアプリケーションが使用するリソースを記述する宣言的なメタデータモデルを作成します。このメタデータモデルを使って、プロビジョニング、デプロイメント、およびドメインライフサイクル操作の実行を繰り返し実行することができ、アプリケーションのContinuous Deliveryに最適です。
Oracle WebLogic Server Deploy Tooling
https://github.com/oracle/weblogic-deploy-tooling
WDTは10.3.6から12.2.1.3までの幅広いWebLogic ServerのバージョンならびにWindowsとUNIXの両方のOSをサポートするという柔軟性を有しており、次の利点があります。
- WebLogicドメインを観察してメタデータモデル(JSONまたはYAML)に抽出する
- 新規WebLogic Serverドメインをメタデータモデルを使って作成、ドメイン構成のバージョン管理が可能
- 既存のWebLogic Serverドメインの構成を更新し、アプリケーションやリソースをドメインに展開
- ランタイムへの変更を実施する前に、メタデータモデル(モデルとも呼ばれる)へのランタイム変更が可能
- 別のプロパティファイルで値を提供できるようプレースホルダを設定でき、同じモデルを複数の環境に適用可能
- モデルやプロパティファイルで直接パスワードを暗号化可能
- スパースモデル(疎性モデル)をサポート、他のアーティファクトを記述しなくてもモデルは特定の操作に必要なものを記述するだけでよい
- モデルの内容を簡単に検証し、関連する成果物がフォーマット上問題ないことを検証
- 自動化とデプロイのContinuous Deliveryが可能
- DockerイメージやKubernetesのような環境へのドメインのLift & Shiftを容易に
現在、このプロジェクトでは5個の専用ツールを提供しており、全てシェルスクリプトとして公開しています。
- Create Domain Tool(ドメイン作成ツール、createDomain)ドメインの作成方法と、モデルに指定されているすべてのリソースとアプリケーションをドメインに移入する
- Update Domain Tool(ドメイン更新ツール、updateDomain)
既存のドメインを更新し、モデルに指定されているすべてのリソースとアプリケーションをオフラインモードまたはオンラインモードでドメインに移入する
- Deploy Applications Tool(アプリケーション展開ツール、deployApps)オフラインまたはオンラインモードのいずれかで、既存ドメインにリソースとアプリケーションを追加する
- Discover Domain Tool(ドメイン探索ツール、discoverDomain)既存のドメインを観察し、ドメインとそのドメインにデプロイされたバイナリのアーカイブファイルを記述したモデルファイルを作成する
- Encrypt Model Tool(モデル暗号化ツール、encryptModel)ユーザーが入力したパスフレーズを使用して、モデル(またはその変数ファイル)のパスワードを暗号化する
- Validate Model Tool(モデル検証ツール、validateModel)モデル作成や編集に役立つよう、モデルのスタンドアロン検証とモデル使用情報を提供
WebLogic on Docker and Kubernetesプロジェクトでは、WDTを利用してWebLogicドメインをプロビジョニングし、DockerイメージまたはKubernetes永続ボリューム(PV)内にアプリケーションをデプロイします。Discover Domain ToolとCreate Domain Toolのおかげで、Docker/Kubernetes以外の環境で動作するドメインを、これらの環境にLift & Shiftできます。 Docker/Kubernetes環境では特定のWebLogic構成(ネットワークなど)が必要ですが、Validate Model Toolは、WebLogicの構成を検証し、これらの環境で実行できるようにするためのしくみを提供します。
Dockerイメージ内にWebLogic Server 12.2.1.3のドメインをプロビジョニングする方法を説明するために、GitHub WebLogic Dockerプロジェクトでサンプルを作成しました。
Example Image with a WLS Domain
https://github.com/oracle/docker-images/tree/master/OracleWebLogic/samples/12213-domain-wdt
WebLogicドメインは、WebLogic動的クラスタ、1個のシンプルなアプリケーションがデプロイ済みで、コンテナ内で実行されるOracle Databaseに接続するデータソースで構成されます。このサンプルには、基本的なWDTモデルのsimple-topology.yamlが含まれており、このモデルにはDockerイメージ内のドメイン構成が記述されています。GitHubのWDTプロジェクトのREADMEファイルに記載の形式と規則に従って、WDTモデルをテキストエディタで作成および変更できます。また、WDTのDiscover Domain Toolを使用して既存のWebLogicドメインからモデルを作成することもできます。
Oracle WebLogic Server Deploy Tooling README
https://github.com/oracle/weblogic-deploy-tooling/blob/master/README.md
ドメイン作成には、アプリケーションとライブラリのデプロイメントが必要になることがありますが、これは、特定の構造を持つZIPアーカイブを作成し、モデル内でそれらのアイテムを参照することによって実現できます。このサンプルでは、小さなアプリケーションWARを含むシンプルなZIPアーカイブを作成してデプロイします。アーカイブは、Dockerイメージを作成する前にサンプルディレクトリに作成されています。
How to Build and Run
イメージはdocker-imagesリポジトリのWebLogic Server 12.2.1.3イメージをベースにしています。以下のREADMEに従って、ローカルリポジトリにWebLogic Serverインストールイメージをビルドします。
Oracle WebLogic Server on Docker
https://github.com/oracle/docker-images/tree/master/OracleWebLogic/dockerfiles/12.2.1.3
(訳注)
Dockerfile(https://github.com/oracle/docker-images/tree/master/OracleWebLogic/dockerfiles/<WLSのバージョン>のDockerfile.developerもしくはDockerfile.generic)の30行目でPullしているServer JREイメージを変更しないとうまく動作しない場合があります。
Docker Storeの場合
oracle/serverjre:8 --> store/oracle/serverjre:8
Oracle Container Registryの場合
oracle/serverjre:8 --> container-registry.oracle.com/java/serverjre:8
WDTインストーラを使って、このサンプルのWebLogicドメインイメージをビルドします。
このサンプルでは、Zipアーカイブ(archive.zip)に含まれているシンプルな1ページのWebアプリケーションをデプロイします。このアーカイブを、ドメインのDockerイメージを構築する前に作成する必要があります。
$ ./build-archive.sh
ドメインイメージを作成する前に、WDTモデル(simple-topology.yaml)も必要です。 このWebLogicドメインサンプルをカスタマイズする場合は、エディタでモデル(simple-topology.yaml)を変更するか、WDT Discover Domain Toolを使用して既存のWebLogicドメインから構成を取得できます。
以下のイメージは、サンプルのWDTモデル(simple-topology.yaml)のスニペットです。ここで、データベースパスワードが暗号化され、WebLogicドメインコンテナ実行前に,提供されるプロパティファイルの値で置換されます。
このサンプルをビルドするには以下のコマンドを実行します。
$ docker build \
--build-arg WDT_MODEL=simple-topology.yaml \
--build-arg WDT_ARCHIVE=archive.zip \
--force-rm=true \
-t 12213-domain-wdt .
ローカルリポジトリにWebLogicドメインができあがっているはずです。
How to Run
このサンプルでは、WebLogicドメインの各管理対象サーバにデータソースがデプロイされています。コンテナ内で実行されているOracle Databaseにデータソースを接続する必要があるため、Oracle DatabaseイメージをDocker StoreもしくはOracle Container RegistryからローカルリポジトリにPullします。
$ docker pull container-registry.oracle.com/database/enterprise:12.2.0.1
WebLogic ServerとOracle Databaseのコンテナが動作するよう、Dockerネットワークを作成します。
$ docker network create -d bridge SampleNET
Run the Database Container
データベースコンテナを作成するには、以下の環境ファイルを使用して、データベース名、ドメイン、および機能バンドルを設定します。以下は環境ファイル(properties/env.txt)の例です。
DB_SID=InfraDB
DB_PDB=InfraPDB1
DB_DOMAIN=us.oracle.com
DB_BUNDLE=basic
以下のDockerコマンドを実行してデータベースコンテナを実行します。
$ docker run -d --name InfraDB --network=SampleNET \
-p 1521:1521 -p 5500:5500 \
--env-file /Users/mriccell/Docker/docker-images/OracleWebLogic/samples/12213-domain-wdt/properties/env.txt \
-it --shm-size="8g" \
container-registry.oracle.com/database/enterprise:12.2.0.1
データベースが問題なく動作していることを確認します。docker psコマンドの出力にあるSTATUSフィールドに(healthy)と表示されていればOKです。
データベースはデフォルトのパスワード(Oradoc_db1)で作成していますが、パスワードを変更するには、SQL*Plusを使う必要があります。SQL*Plusを実行するには、Oracle Instance ClientをOracle Container RegistryもしくはDocker StoreからPullし、以下のコマンドを使ってsqlplusコンテナを実行します。
$ docker run -ti --network=SampleNET --rm \
store/oracle/database-instantclient:12.2.0.1 \
sqlplus sys/Oradoc_db1@InfraDB:1521/InfraDB.us.oracle.com AS SYSDBA
SQL> alter user system identified by dbpasswd container=all;
新たなデータベースパスワード(dbpasswd)をプロパティファイル(properties/domain.properties)のDB_PASSWORDに追加して、データベースに接続できることを確認してください。
$ docker exec -ti InfraDB \
/u01/app/oracle/product/12.2.0/dbhome_1/bin/sqlplus \
system/dbpasswd@InfraDB:1521/InfraPDB1.us.oracle.com
SQL> select * from Dual;
Run the WebLogic Domain
domain.properties (properties/domain.properties)ファイルを編集し、データベースのパスワードを含む、WebLogicドメイン実行に必要な全てのパラメータを設定する必要があります。
コンテナ化された管理サーバを開始するには、以下のコマンドを実行します。
$ docker run -d --name wlsadmin --hostname wlsadmin \
--network=SampleNET -p 7001:7001 \
-v /Users/mriccell/Docker/docker-images/OracleWebLogic/samples/12213-domain-wdt/properties:/u01/oracle/properties \
12213-domain-wdt
コンテナ化された管理対象サーバ(ms-1)を起動して上記の管理サーバに自動登録する場合、以下のコマンドを実行します。
$ docker run -d --name ms-1 --link wlsadmin:wlsadmin \
--network=SampleNET -p 9001:9001 \
-v /Users/mriccell/Docker/docker-images/OracleWebLogic/samples/12213-domain-wdt/properties:/u01/oracle/properties \
-e MS_NAME=ms-1 12213-domain-wdt startManagedServer.sh
追加の管理対象サーバ(この例ではms-2)を起動する場合、以下のコマンドを実行します。
$ docker run -d --name ms-2 --link wlsadmin:wlsadmin \
--network=SampleNET -p 9002:9001 \
-v /Users/mriccell/Docker/docker-images/OracleWebLogic/samples/12213-domain-wdt/properties:/u01/oracle/properties \
-e MS_NAME=ms-2 12213-domain-wdt startManagedServer.sh
上記のシナリオでは、単一のホスト環境に動的クラスタを設定したWebLogicドメインを作成します。サーバーが実行中で、データソースがコンテナ内で実行されているOracle Databaseに接続していることを確認しましょう。ブラウザでhttp://localhost:7001/console にアクセスしてWebLogic Server管理コンソールを起動します。このとき、domain.propertiesファイルで指定した資格情報を使用してログインします。
WebLogic Deploy Toolingを使うと、WebLogicドメインのプロビジョニング、アプリケーションやアプリケーションに必要なリソースのデプロイが簡単になります。WebLogic on Docker/Kubernetesプロジェクトでは、これらのツールを利用して、イメージ内のドメインのプロビジョニングを簡素化したり、Kubernetes永続ボリュームに永続化したりしています。 我々は、KubernetesでのWebLogicドメインの管理を簡素化するWebLogic Kubernetes Operatorの一般提供しましたが、WebLogicドメインの管理機能を強化したWebLogic Kubernetes Operator ver 2.0をまもなくリリースする予定です。幅広い場所でこれらのドメインが動作可能になるよう、WebLogicドメインのプロビジョニング、デプロイ、および管理を容易にするためのツールを引き続き提供していきます。このサンプルが、WebLogic Deploy Toolingを使ってWebLogic Serverドメインのプロビジョニングとデプロイメントを行いたい全ての方々にお役に立つことを願っています。皆さんのご意見をお待ちしております。