Weblogic の config.xml を複数のマシンに移行するにはどうすればよいですか?
-
19-09-2019 - |
質問
私たちの開発チームは、Weblogic 10.3 上で実行される J2EE アプリケーションを開発しています。各開発マシンは、Weblogic 10.3 アプリケーション サーバーの独自のコピーを実行します。開発環境の Weblogic ドメインは、最初に 1 台のマシン上に作成され、次に Weblogic の構成ツール (bea10/wlserver_10.3/common/bin/config.cmd) を使用してすべてのマシンにコピーされました。
各開発マシンには独自の config.xml のコピーがあります。このファイル内のすべてのパスフレーズ (JDBC データソースなど) は暗号化されており、同じパスワードでもマシンごとに暗号化形式が異なるため、暗号化にはマシンごとに異なるシードが使用されるようです。
問題は、時々 config.xml を更新する必要があり (新しい EJB が追加された場合など)、その更新をすべてのマシンに適用する必要があることです。これをどうやって進めるべきでしょうか?ファイルを CVS に置き、そこから他のマシンを更新すると、各マシンの暗号化されたパスワードが上書きされてしまいます。これにより、サーバーが元々別のマシンで暗号化されたパスフレーズを復号化しようとすると、醜いパディング例外が発生します。
暗号化されたパスワードを上書きせずに config.xml 内の変更を正しくマージする Ant タスク (見つかりませんでした) または同様のメカニズムはありますか?それとも、何らかの方法でパスフレーズを平文で指定し、初回起動時に暗号化することが可能でしょうか (以前のバージョンでは可能であったが、10.3 では不可能だったというかすかな記憶があります)。
Weblogic に取り組んでいる開発チームはこれにどのように対処していますか?
BR、
マルコ
解決
[...]各開発マシンは、独自のを持っています config.xmlのコピー。全ての パスフレーズ(JDBC用のもの このファイル内のデータソースなど)があります 暗号化された...
はい、WebLogic ServerはそのドメインのコンフィグレーションXMLファイル(複数可)に格納されているすべてのプレーンテキストのパスワードを暗号化します。これは、機密情報へのアクセスを防止することです。パスワードは管理コンソールまたはスクリプトツールを使用して入力されると、それらは、構成XMLファイル(複数可)に格納される前に、それが自動的に暗号化されます。
...と暗号化 明らかに異なるシードを使用しています 同じパスワード以来、各マシン 上の異なる暗号化された形式があります 異なるマシンます。
暗号化について (Oracle WebLogic ServerのJavaユーティリティから)ユーティリティ、マニュアルには書かれています:
weblogic.security.Encrypt
は、WebLogic Serverで使用するためのクリアテキストの文字列を暗号化します。ユーティリティは、カレントディレクトリの暗号化サービス、または指定したWebLogic Serverドメインのルートディレクトリの暗号化サービスを使用します。注:暗号化された文字列は、それが使用されるWebLogic Serverドメインでの暗号化サービスによって暗号化されている必要があります。そうでない場合、サーバは文字列を解読することはできません。
これは私の知る限り、WebLogicはクリアテキスト文字列を暗号化するためのドメインのパスワードのsaltファイル(SerializedSystemIni.dat
)を使用して、ドキュメントに記載されないが、。
私たちはCVSにファイルを入れて、そこから他のマシンを更新する場合は、[...]各マシン上で暗号化されたパスワードが上書きになるだろう。
あなたは(これは問題ではない場合)あなたのVCSに保存されているconfig.xmlのクリアテキストのパスワードを使用することを選択することができます。実際には、WebLogic Server 9.0より前に、パスワードは、その後の再起動時に暗号化になるだろう。コンフィギュレーションファイルにクリアテキストのパスワードを使用して、WebLogic Serverの9.0から起動すると、「完全に」のみ開発ドメインおよびWebLogicは、パスワードを再暗号化しませんサポートされています。両方のケースで、これは人々が問題なく設定ファイルをチェックアウトできるようになります。
Antタスク(私は1つを見つけることができませんでした)、または暗号化されたパスワードを上書きせずに正しくconfig.xmlに変更をマージするの世話をするときと同じメカニズムがありますか?...
私は、これは直接あなたの質問に答えるかわからないが、Oracle WebLogic Serverは、<のhref =「http://download.oracle.com/docs/cd/E12840_01/wls/docs103/programming/ant_tasks.html」のrelを提供します=「noreferrer」> Antタスクは、そのJavaユーティリティ(すべてではない)のほとんどのを。たぶん、あなたはそこに有益な何かを見つけることができます(チェックアウト )のwlconfig Antタスクを使用したWebLogic Serverドメインの設定
私は上記の書いたように、それとも、(私はこれが以前のバージョンではなく10.3に可能であったというかすかな記憶を持っている)何とか平文でパスフレーズを指定し、最初の起動時にそれらを暗号化することが可能である。
、これは、WebLogic Server 9.0より前に「デフォルト」の動作でした。あなたはそれ以降のバージョンのこの動作を強制することができるかどうかはわかりません。もちろん、あなたは常に暗号化rel="noreferrer">アリとあなたは、人々は私が本当に事実後にそれらを暗号化するポイントが表示されていない、一度クリアテキストのパスワードを見ることができるならば、正直、それを行うだけに。
他のヒント
私は水銀やGitのようなものを使用し、変更が完了していないファイルには、diffで移動されるように、エクスポート/インポート機能を使用することになります。
あなたは(私は申し訳ありませんが、私はある程度はあなたの痛みを共有する)CVSで立ち往生している場合は、さて、あなたは差分のCVSのレポを作成することを検討することがあります。例えば。設定ファイルの新しいバージョンが作られたときに、新しいファイルが古いファイルに差分を取っているとdiffファイルをレポに追加され、他のホストは、CVSからチェックアウトし、設定ファイルをパッチます。
これはハックですが、動作するはずです。
個人的には、大量のドメイン更新を行うために WLST を検討したいと思います。Python や WLST の経験がなくても、非常に簡単です
- ドメインの記録をオンにする (管理者 Web インターフェイス)
- 1 つのドメイン (管理 Web インターフェイス) で変更を行います
- 変更をアクティブ化する (管理者 Web インターフェイス)
- デフォルトのドメインフォルダーにPythonスクリプトを取得する必要があります
- それぞれの環境に合わせて
- WLSTを使用して管理サーバーに接続します
- スクリプトを適用する
- 必要に応じてドメインまたは管理対象サーバーを再起動します
現在、私が働いている会社は、あなたが説明したことと同様のことを行っています。Weblogicドメインファイルをハックし、小さな調整を加えて同じファイルをすべての環境にデプロイします。何年にもわたって、私たちは完全に混乱した状態になってしまいました。それは仕方のないことだ。
WLSTを使用して実行しました。Python では、かなり抽象的な、ある種の単純な宣言型「ドメイン モデル」を使用します。クラスター内の異なるサーバーの構成は指定されません。私たちの環境では、すべてのノードが同一である必要があります)。このモデルは非常に短いです (30 以上の接続プール、多数の JMS 要素、およびいくつかの外部 JMS プロバイダーを持つ最大のアプリケーションの場合は 2 ~ 3 ページ)。その後、2 つのスクリプトができました。最初にターゲット環境に空のドメインを作成し、2 番目でドメイン モデルを適用します。開発者が「マスター」環境で行った変更を収集するために、ドメイン構成を通過してモデル ファイルを出力するスクリプトがあります。これらのモデル ファイルの差分を使用すると、何が変更されたかを確認できます。
これは重量のあるフレームワークのように見えますが、100 を超えるアプリケーションの開発、テスト、ステージング、運用環境を管理する必要がある場合、実際に大幅に時間を節約できます。
小規模な場合は、ファイルをコピーして同じ SerializedSystemIni.dat を使用するだけで十分です。ドメイン名が同じであることを確認し、アドレス/ポートを調整してください。別の SerializedSystemInit.dat を使用したい場合も、このコードに基づいて行うのはかなり簡単です (http://gustlik.wordpress.com/2008/08/06/decryption-of-configuration-passwords-in-weblogic/) 元の SerializedSystemIni.dat でパスワードをデコードし、新しいパスワードでエンコードするユーティリティを作成するのは非常に簡単です。これでうまくいくはずです。