5 カスタム・フックを使用したワークフローの変更
拡張ポイントという事前に定義されている時点にビジネス固有のカスタム・ロジックを追加して、Oracle WebLogic Serverで既存のZDTパッチ適用ワークフローを変更します。
拡張ポイントについて
拡張ポイントは、カスタム・ロジックを挿入できるZDTパッチ適用ワークフローのプレースホルダです。ZDTパッチ適用は、ロールアウトの拡張ポイントおよび事前に定義されている環境変数を提供します。
ZDTカスタム・フック機能は、追加のコマンドを実行して動作をカスタマイズできるパッチ適用ワークフローの特定の時点を識別します。これらの時点は拡張ポイントと呼ばれます。事前に定義されている各拡張ポイントで、拡張機能と呼ばれるリソースの集合を挿入してワークフローの動作をカスタマイズできます。
customhooks.html#GUID-0D2A78A9-5611-4192-A888-04104A45E897__GUID-5812AB42-224F-410A-B75D-50E490F83D53は、ワークフローで使用可能な拡張ポイントとその説明およびユースケースを示します。
表5-1 ワークフローの使用可能な拡張ポイント
名前 | 説明 | ユースケース |
---|---|---|
ep_OnlineBeforeUpdate |
パッチ適用操作を各ノードで開始する前に、ワークフローの初期ステージでこの拡張ポイントを使用します。通常これは前提条件チェックを実行できる時点です。 |
|
ep_EachNode |
ワークフローで各ノードの追加の操作を実行する必要がある場合、この拡張ポイントを使用します。 |
|
ep_OfflineBeforeUpdate |
OracleホームまたはJavaホームの更新を開始する直前に、すべてのサーバーを停止している場合にワークフローのステージでこの拡張ポイントを使用します。 |
|
ep_OfflineAfterUpdate |
OracleホームまたはJavaホームにパッチが適用されてからサーバーを起動する前に、この拡張ポイントを使用してカスタム操作を実行します。 |
|
ep_OnlineAfterServerStart |
各ノードの更新を完了してサーバーを再起動した後、この拡張ポイントを使用してカスタム操作を実行します。 |
次のようなサーバーおよびアプリケーション・レベルの管理タスクを実行します。
|
ep_OnlineAfterUpdate |
サーバーを再起動した後、この拡張ポイントを使用して追加の操作を実行します。アプリケーションはサービス提供リクエストを続行します。 |
|
ep_RolloutSuccess |
パッチ適用に成功した後、この拡張ポイントを使用して通知の送信などのカスタム・ロジックを定義します。 |
|
この機能は、拡張ポイントで渡すことができる特定の事前に定義されている環境変数も提供します。事前に定義されている環境変数はオンライン拡張ポイントとともに使用できますが、その他はオフライン拡張ポイントとともに使用できます。サーバーの実行中にオンライン拡張ポイントを実行できます。また、オフライン拡張ポイントはサーバーの停止中に使用できます。オフラインおよびオンラインの両方の拡張ポイントは、リモート・ノード上またはローカル・ノード上で実行できます。customhooks.html#GUID-0D2A78A9-5611-4192-A888-04104A45E897__GUID-E9812DB2-AF43-4A1D-89D6-B789908C2343は、オンラインおよびオフラインの拡張ポイントで使用できるすべての環境変数のリストを提供します。
表5-2 拡張ポイントの事前に定義されている環境変数
変数名 | 説明 | オフラインまたはオンライン拡張ポイントとともに使用可能 |
---|---|---|
javaHome |
既存のJavaホームの場所 |
オフライン |
newJavaHome |
使用する新しいJavaホームの場所 |
オフライン |
MWHome |
ミドルウェア・ホームの場所 |
オフライン |
domainDir |
ドメイン・ディレクトリの位置 |
オフライン |
domainTmp |
一時ファイルを格納するドメイン・ホームのディレクトリの位置 |
オフライン |
patched |
パッチが適用されているOracleホームのロケーション |
オフライン |
backupDir |
既存のOracleホームを移動するロケーション |
オフライン |
isRevert |
スクリプトの実行または回復操作を制御します |
オフライン |
currentNodeName |
現在更新されているノードの完全名。この変数は、 |
オンライン |
currentServerNames |
ターゲット・ノードのサーバーの名前のカンマ区切りリスト。この変数は、 |
オンライン |
applicationInfo |
アプリケーションごとにカンマで区切られたアプリケーション名、アプリケーションの場所およびアプリケーション・バックアップ。複数のアプリケーションをコロンで区切ります。 <appName>,<appLoc>,<appBackUp>:<appName2>,<appLoc2>,<appBackUp2> たとえば、 |
オンライン |
カスタム・フックのパッチ適用ワークフロー・プロセス
管理サーバー・ノードまたはリモート・ノードで実行されるワークフローの操作をカスタマイズできます。
ワークフロー・プロセスがユーザー・フックに達すると、その拡張ポイントのユーザー指定の拡張機能が実行されます。コード0(ゼロ)で終了するスクリプトは正常に完了したとみなされ、ゼロ以外の終了コードを返すスクリプトは失敗したとみなされます。エラーが発生しないアバイ、処理が再開されます。拡張機能の実行中にエラーが発生する場合、ワークフローが以前の状態にロールバックします。スクリプトは組込みの再試行がなく、メソッドを再開しないことに注意してください。スクリプトを一度試行し、失敗した場合にワークフローは再試行しません。そのため、スクリプトで再試行する必要がある操作を実行する場合、スクリプトに再試行ロジックを書き込む必要があります。
ワークフローの実行中に、STDOUTまたはSTDERRへのオフライン・スクリプトで生成された出力が管理サーバー・ログ・ファイルに伝播されます。同様に、ローカルで実行するスクリプトで生成された出力も管理サーバ-・ログ・ファイルに書き込まれます。これには、エラー出力または非エラー出力が含まれます。
customhooks.html#GUID-8F81FA21-B987-44D6-AE09-07631174D2EB__GUID-339AFF0B-495D-4A52-9040-3CAF84B4F91Bは、ワークフローの一般的なシナリオと、異なる拡張ポイントを含める方法を示しています。
図5-1 拡張ポイントを使用したパッチ適用ワークフロー
この図は、OracleホームまたはJavaホームを更新する通常のワークフローで使用できる拡張ポイントを示します。
「図5-1 拡張ポイントを使用したパッチ適用ワークフロー」の説明
拡張機能を指定したワークフローの変更
カスタム・フック機能は、ワークフローの拡張機能を導入するいくつかの方法を提供します。2つのJSONファイル(extensionConfiguration.json
またはextensionProperties.json
)のいずれかで拡張機能を指定するか、ロールアウト・コマンドのオプションとして直接渡すことができます。拡張パラメータを渡す方法に関係なく、これらのパラメータは環境変数に変換されるスクリプト・パラメータに最終的にマップされます。
この柔軟性により、異なるレベルでパラメータをオーバーライドまたはカスタマイズできます。拡張パラメータを指定する複数の方法を使用する場合、スクリプト・パラメータをオーバーライドする順序は次のとおりです。
-
extensionConfiguration.json
ファイルで指定される拡張パラメータ。 -
extensionConfiguration.json
ファイルで設定されているパラメータをオーバーライドする拡張パラメータJSONファイルで指定された拡張パラメータ。 -
2つのJSONファイルで指定されたパラメータをオーバーライドするWLSTロールアウト・コマンドのオプションとして指定された拡張パラメータ。ワークフローごとのロールアウト・コマンドのオプションのみをカスタマイズして、異なる環境で同じ拡張JARを使用できます。
次の各項では、これらの方法を使用して拡張機能を指定する詳細を説明します。
JSON構成ファイルの作成
extensionConfiguration.json
ファイルは、拡張定義の配列を含むJSON形式ファイルです。各拡張定義では、次を指定する必要があります。
-
拡張機能をワークフローに挿入する事前に定義されている拡張ポイントの名前。
-
その拡張ポイントで実行するクラス・ファイルの完全修飾名。
extensionConfiguration.json
ファイルに、拡張機能の定義方法を示します。
{"extensions":[
{
"extensionPoint":"ep_OnlineBeforeUpdate",
"extensionClass":"weblogic.management.patching.extensions.ScriptExecutorExtension",
"extensionParameters":{"scriptName":"checkJar.sh","jarPath":"/tmp/extension.jar"}
},
{
"extensionPoint":"ep_EachNode",
"extensionClass":"weblogic.management.patching.extensions.ScriptExecutorExtension",
"extensionParameters":{"scriptName":"checkDiskSpace.sh"}
},
{
"extensionPoint":"ep_OnlineAfterUpdate",
"extensionClass":"weblogic.management.patching.extensions.ScriptExecutorExtension",
"extensionParameters":{"scriptName":"checkApps.sh","appUrls":"http://localhost:8004/Coke/Simple_stage/handle,http://localhost:8006/Coke/Simple_stage/handle"}
},
{
"extensionPoint":"ep_RolloutSuccess",
"extensionClass":"weblogic.management.patching.extensions.ScriptExecutorExtension",
"extensionParameters":{"scriptName":"emailSuccess.sh"}
}
]}
extensionConfiguration.json
ファイルを作成した後、sampleExtension.jar
などのJARファイルの他の関連するネイティブ・スクリプトとともに配置する必要があります。作成するJARファイルは、Oracle標準に準拠するディレクトリ構造を持つ必要があります。複数の拡張機能を単一の拡張ポイントで指定する場合、拡張機能はextensionConfiguration.json
ファイルに表示される順序で実行されます。各JARファイルには、1つのextensionConfiguration.json
ファイルのみを含める必要があります。customhooks.html#GUID-04D475B0-DAF4-4140-A417-26F54B55048B__GUID-71C5F3FE-EC0F-44EB-BD26-E968ED106BDEは、拡張JARファイルの構造を示します。
ロールアウト中に、スクリプトがDOMAIN_HOME/bin
の下にあるpatching
ディレクトリで抽出されます。
JSONプロパティ・ファイルの作成
または、extensionProperties.json
ファイルなどの別のJSONファイルの拡張情報を指定できます。ワークフローの複数の拡張機能を渡す必要がある場合およびこれらの拡張機能を複数のJARファイルに配置する場合、このファイルを使用できます。JSONプロパティ・ファイルはextensionConfiguration.json
ファイルと異なることに注意してください。extensionConfiguration.json
ファイルは独自のJARファイル内のスクリプトに固有であり、JSONプロパティ・ファイルは、ワークフローの複数の拡張JARファイルを含める便利な方法を提供します。各JSONプロパティ・ファイルには、拡張構成情報を含む1つ以上のJARファイルへのパスが含まれ、オプションで追加のパラメータが含まれます。
次のスニペットは、サンプルのextensionProperties.json
ファイルの形式を示します。
{"extensionProperties":[
{
"extensionJar":"/pathTo/extension.jar",
"extensionParameters":{"scriptName":"updateProperties.sh", "appURL":"http://localhost:7005/context?param1=val1¶m2=val2,http://localhost:7006/context2?param1=val1¶m2=val2"}
}
]}
WLSTロールアウト・コマンドのオプションを含む
2つのJSONファイルのいずれかで拡張パラメータを渡すか、extension
またはextensionProperties
オプションを使用してWLSTロールアウト・コマンドに直接渡すことができます。これらのオプションを使用して拡張パラメータを指定する方法の詳細は、「WLSTを使用したワークフローの起動と監視」のWLSTロールアウト・コマンドの引数を参照してください。
ノート:
JSONファイルを作成して拡張機能を含めて拡張jarに配置する場合、次の条件を満たしていることを確認してください。-
ロールアウト前にすべてのリモート・ノードに拡張jarを配置します。
-
ロールアウトする拡張パラメータを含む拡張jarへのパスを指定します。同じパスはすべてのノードに存在する必要があります。
-
Windowsシステムで、JSONファイルのパスを指定する場合にバックスラッシュ文字を使用しないでください。
-
JSONファイルのスクリプト・パラメータの値にカンマを含めないでください。