はじめに
WebLogicにデプロイしているアプリケーションを抽出するための便利なツールとして、WebLogic Deploy Toolingというものがあります。
このツールを使うことで、WebLogic上のアプリケーションをメタデータとして抽出し、以下のような用途に利用ができます。
- 別のWebLogic環境に移行
- 2つのWebLogic環境を同期
- WebLogicアプリケーションのコンテナ化
この記事では、アプリケーションの抽出を実際に行ってみたいと思います。
前提
今回はWebLogicをOCI上ですぐにプロビジョニングして利用できるWebLogic Server for OCIを利用してみます。
OSとWebLogicのバージョンはいくつか選択が可能ですが、実際に動かしてみる環境はそれぞれ以下の通りになります。
- Oracle Linux 7.9
- WebLogic Server 14.1.1.0
- Autonomous Database(ATP)
基本的な流れ
- WebLogic Deploy Tooling(WDT) を抽出元のドメインがあるサーバにインストール
-
discoverDomain
コマンドの実行
これだけです。
WDTのインストール
OSユーザのスイッチ
WebLogic Server for OCI では、oracle
ユーザでWebLogicの操作を行います。
sudo su - oracle
環境変数の確認
まずは環境変数JAVA_HOME
が設定されているかを確認します。
echo $JAVA_HOME
設定されていなければ、適切なJDKのパスを設定してください。
WDTの最新バージョンを確認
次に、公式のGithub(https://github.com/oracle/weblogic-deploy-tooling/releases/) で、WDTの最新バージョンを確認します。
2023年2月現在では2.4.4が最新のようです。
WDTのダウンロードとunzip
<バージョン>の部分を確認したバージョン(2.4.4であればrelease-2.4.4/weblogic
のように)に置き換えて、以下コマンドを実行します。
wget -qO- \
https://github.com/oracle/weblogic-deploy-tooling/releases/download/release-<バージョン>/weblogic-deploy.zip | \
$JAVA_HOME/bin/jar xv
スクリプトの権限変更
WDTのスクリプトを実行可能な状態にします
chmod +x weblogic-deploy/bin/*.sh
discoverDomainコマンドを実行してアプリケーションを抽出
コマンドの実行
コマンドを実行する前に、コマンド内の必要箇所を書き換える必要があります。
weblogic-deploy/bin/discoverDomain.sh \
-oracle_home <ORACLE_HOME> \
-domain_home <DOMAIN_HOME> \
-archive_file source.zip \
-model_file source.yaml \
-variable_file source.properties \
-domain_type <WLS/JRF>
-
<ORACLE_HOME>
と`にはそれぞれのパスを設定 -
<WLS/JRF>
はドメインのタイプを指定
-
-archive_file
オプション -> アプリケーション(WAR/EAR)がまとまったzipファイルの出力先を指定可能 -
-model_file
オプション -> WebLogic構成のメタデータファイルの出力先を指定可能 -
-variable_file
オプション -> 変数群をまとめたファイルの出力先を指定可能
今回は一例としてこのような形でコマンドを実行してみます。
***_domainの部分には実際にはドメイン名が入ります。
weblogic-deploy/bin/discoverDomain.sh \
-oracle_home /u01/app/oracle/middleware/ \
-domain_home /u01/data/domains/***_domain/\
-archive_file source.zip \
-model_file source.yaml \
-variable_file source.properties \
-domain_type WLS
実際に実行した場合はこのようなログが出て、discoverDomain.sh completed successfully (exit code = 0)
と出れば成功です。
JDK version is 1.8.0_331-b09
JAVA_HOME = /u01/jdk
WLST_EXT_CLASSPATH = /home/oracle/weblogic-deploy/lib/weblogic-deploy-core.jar
CLASSPATH = /home/oracle/weblogic-deploy/lib/weblogic-deploy-core.jar
WLST_PROPERTIES = -Dcom.oracle.cie.script.throwException=true -Djava.util.logging.config.class=oracle.weblogic.deploy.logging.WLSDeployLoggingConfig
/u01/app/oracle/middleware//oracle_common/common/bin/wlst.sh /home/oracle/weblogic-deploy/lib/python/discover.py -oracle_home /u01/app/oracle/middleware/ -domain_home /u01/data/domains/***_domain/ -archive_file source.zip -model_file source.yaml -variable_file source.properties -domain_type WLS
Initializing WebLogic Scripting Tool (WLST) ...
Welcome to WebLogic Server Administration Scripting Shell
Type help() for help on available commands
--- 中略 ---
discoverDomain.sh completed successfully (exit code = 0)
成果物を確認
3つの成果物(ファイル)が出来上がってるはずです。
$ ll source.*
-rw-r-----. 1 oracle oracle 143 Feb 10 05:39 source.properties
-rw-r-----. 1 oracle oracle 5378 Feb 10 05:39 source.yaml
-rw-r-----. 1 oracle oracle 430178 Feb 10 05:39 source.zip
source.yaml
が構成のメタデータです。
DB接続の設定や、source.zip
内のアプリケーションのパスがきちんと記載されていることが確認できます。
$ cat source.yaml
domainInfo:
AdminUserName: '@@PROP:AdminUserName@@'
AdminPassword: '@@PROP:AdminPassword@@'
topology:
--- 中略 ---
resources:
JDBCSystemResource:
***DB:
Target: ***
JdbcResource:
DatasourceType: GENERIC
JDBCConnectionPoolParams:
StatementCacheSize: 10
InitialCapacity: 1
StatementCacheType: LRU
MaxCapacity: 15
TestTableName: SQL ISVALID
MinCapacity: 1
JDBCDataSourceParams:
JNDIName: ***DB
JDBCDriverParams:
DriverName: oracle.jdbc.OracleDriver
PasswordEncrypted: '@@PROP:JDBC.Handson-DB.PasswordEncrypted@@'
URL: jdbc:oracle:thin:@***db_tp
Properties:
oracle.net.tns_admin:
Value: /home/oracle/***db
user:
Value: '@@PROP:JDBC.***DB.user.Value@@'
oracle.net.wallet_location:
Value: /home/oracle/***db
oracle.jdbc.fanEnabled:
Value: 'false'
oracle.net.ssl_version:
Value: '1.2'
oracle.net.ssl_server_dn_match:
Value: 'true'
appDeployments:
Application:
***App:
SourcePath: wlsdeploy/applications/***App.war
ModuleType: war
Target: ***_adminserver
まとめ
今回は、WDTを使って簡単にアプリケーションやWebLogicの構成を抽出できることが分かりました。
次は、この抽出したファイル群を使って、WebLogicアプリケーションのコンテナ化をやってみたいと思います。
参考資料