1

テストおよび展開環境の特定の設定をより適切に制御するために Fabric の使用を開始したばかりであり、構成を交換するための最良の方法を見つけようとしています。

アプリケーションに、デフォルトで単純なデータベース接続と認証用のいくつかの定数を定義するモジュールがあるとします。

host = 'db.host.com'
user = 'someuser'
passw = 'somepass'
db = 'somedb'

class DB():
  def __init__(self,host=host,user=user,passw=passw,db=db,cursor='DictCursor'):
    #make a database connection here and all that jazz

ファブリックを見つける前にgetfqdn()、ライブラリの関数を使用しsocketて、システムがプッシュされているホストのドメイン名を確認し、認証資格情報を条件付けしていました。

if getfqdn() == 'test.somedomain.com':
  host = 'db.host.com'
  user = 'someuser'
  passw = 'somepass'
  db = 'somedb'
elif getfqdn() == 'test.someotherdomain.com':
  host = 'db.other.com'
  user = 'otherguy'
  passw = 'otherpass'
  db = 'somedb'

明らかな理由から、これは実際にはそれほど素晴らしいことではありません。私が知りたいのは、プロジェクトが特定のテスト/展開サーバーにプッシュされると、これらの値がプッシュ後に変更されるように、Fabric でこのようなものを適応させる最もスマートな方法は何かということです。

ドキュメントを見るだけで、いくつかのアプローチを考えることができます。Fabric がデプロイメントの内容に基づいてシェル コマンドを使用して出力できる定数を定義するだけのファイルを作成し、データベース ハンドラーを定義するファイルでそれらをインポートできるようにする必要がありますか? openこのようにwritefabfile 内から実行するのは理にかなっていますか? .gitignoreこれらの種類のファイルもリポジトリにコミットされず、ファブリックに依存してデプロイされないようにする必要があると思いました。

getfqdn現在使用している構成設定を交換するか、手動で調整しているすべての構成設定に最適なアプローチを適用する予定です。ありがとう!

4

1 に答える 1

1

これらすべてを env.host から実行してから、contrib テンプレート関数のようなものを使用して conf ファイルをレンダリングし、プッシュアップすることができます。ただし、これらのインスタンスではテンプレートが最適です (参照: puppet およびその他の構成マネージャーも同様)。

于 2012-04-26T00:33:21.300 に答える