2012-04-25 2 views
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 

私は生地を見つけた前に、私はsocketライブラリからのgetfqdn()機能を使用しますシステムがプッシュされているホストのドメイン名を確認して、認証資格情報を条件付きにします。

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がデプロイされたものに基づいてシェルコマンドを使用して出力できる定数を定義したファイルを用意して、データベースハンドラを定義するファイルでそれらをインポートできるはずですか?このようなファブファイル内からopenwriteを実行するのは意味がありますか?私はまた、.gitignoreのこれらの種類のファイルを持っていると仮定していたので、彼らはリポジトリにコミットせず、それらを展開するためにFabricに依存していません。

私は現時点でgetfqdnを使用してスワップするか、手動で調整するすべての構成設定にどのような方法を推奨するのが最適かを考えます。ありがとう!

答えて

1

env.hostのすべてをオフにして、the contrib template functionのようなものを使用して、confファイルをレンダリングしてプッシュアップすることができます。しかし、これらのインスタンスではテンプレートが最適です(人形やその他の設定マネージャも参照してください)

+0

ありがとうございます - これを使用してFabric出力を設定し、私のコードをリファクタリングすることにしました。 – DeaconDesperado

関連する問題