4

postgres DB を使用する django アプリケーションがあります。

使用するdjangoアプリのpostgresユーザー名/パスワードの設定など、postgres DBを設定するシェフのレシピがあります。

このユーザー名/パスワードは、DATABASES settings.py 値で使用されます。

現時点では、postgres の詳細を と の両方に含める必要がありattributes.rb ますsettings.py。それらを 1 か所にまとめるにはどうすればよいですか?

私が現在検討しているオプション:

  1. シェフsettings.pyのテンプレートによって生成された (またはその一部)。そうすれば、詳細はシェフのレシピにあるだけで済みます。これの欠点は、chef 経由でデプロイしない限り、django アプリが不完全であることです。(ローカル開発でさえ vagrant+chef で行われるため、これはそれほど問題ではないかもしれません)。

  2. settings.pyいくつかの値をチェックしてロードする既知のファイルがファイルシステムにある。このファイルはchefによって生成されます。これは、最初のソリューションよりも少しだけ優れています。また、ファイルを読み込んで解析するには、settings.py にいくつかのボイラープレート コードが必要です。

  3. 詳細を入力しsettings.pyて、chef に (何らかの方法で) 抽出させます。このアプローチは、chef レシピの順序を混乱させるため、問題があります (django アプリをチェックアウトし、値を抽出し、値を使用して postgres をセットアップしてから、django を起動する必要があります)。それ自体はそれほど悪くないかもしれませんが、本当の問題は、パスワードがソース管理されたファイルではなく、シェフのデータバッグのようなものにあるシステムに移動したい場合です。

私はかなりグーグルで検索しましたが、レイアウトに関するさまざまな議論と、settings.pydjangoとchefの使用方法に関する一般的な話以外に、良い解決策を見つけることができません. きっと他の誰かがchefを使ってpostgresでdjangoアプリを展開し、これに遭遇したことがありますか?

4

1 に答える 1

1

データバッグを使用する必要があります。そこにパスワードを保存すると、暗号化された data bagである必要があります。その後、両方のレシピ (postgres と python) でデータを読み取ることができます。

また、パスワードを属性に保存することもお勧めできません。公開されすぎているためです。

于 2013-07-27T00:33:09.287 に答える