2

環境全体で構成の変更を調整する良い方法は何ですか?

コードを環境から切り離すために、すべての環境設定を外部ファイルに移動しました。したがって、おそらくアプリケーションは次のものを探し、${application.config.dir}/app.properties含めるapp.propertiesことができます。

user.auth.endpoint=http://some.url/user
user.auth.apikey=abcd12314

問題は、user.auth.endpointテスト時にはテスト リソース、ステージング環境ではステージング リソース、本番環境ではプロダクション リソースを指す必要があることです。

構成ファイルの異なるコピーを維持することはできますが、これは DRY に違反し、非常に扱いにくくなります (20 以上の運用環境があります)。

これを管理する良い方法は何ですか?どのツールを探す必要がありますか?

4

3 に答える 3

1

私はこれに対する 3 つのアプローチを知っています。

最初のアプローチは、たとえば、アプリケーション用の Python "ラッパー" スクリプトを作成することです。スクリプトは、ホスト名、ユーザー名、環境変数の値などの環境の詳細を見つけて、実際のアプリケーションに渡される適切な構成ファイル (またはコマンド ライン オプションのセット) を作成します。

2 つ目の方法は、スクリプト言語 (Python、Lua、および Tcl が思い浮かびます) のインタープリターをアプリケーションに組み込むことです。これにより、組み込みスクリプト言語の構文で構成ファイルを作成できます。このようにして、構成ファイルはスクリプト言語の機能を利用できます。たとえば、環境変数をクエリしたり、シェル コマンド ( などhostname) を実行したり、if-then-else ステートメントを使用して変数を適切に設定したりできます。

3 番目のアプローチ (C++ または Java を使用している場合) は、オープンソースのConfig4*ライブラリーを使用することです (免責事項、私はその主な開発者です)。「Config4* Getting Started」マニュアルの第 2 章を読んで、その柔軟な構文が単一の構成ファイルを複数の環境に適応させる方法の例を確認することをお勧めします。

于 2013-05-19T16:44:14.237 に答える
1

構成を外部化することは良い考えです。それらを環境変数までずっと外部化することができます。

環境変数は、コードを変更することなく、デプロイ間で簡単に変更できます。構成ファイルとは異なり、誤ってコード リポジトリにチェックインされる可能性はほとんどありません。また、カスタム構成ファイルや Java システム プロパティなどの他の構成メカニズムとは異なり、言語や OS に依存しない標準です。

http://12factor.net/configから

于 2013-05-18T11:06:20.253 に答える