2012-04-25 42 views
1

我剛開始使用結構來更好地控制測試和部署環境的特定設置,並試圖瞭解交換配置的最佳方法。使用結構來操縱數據庫連接

比方說,我在我的應用程序的模塊定義了一個簡單的數據庫連接,並且默認的一些常量進行身份驗證:

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可以使用shell命令輸出到的常量,然後定義數據庫處理程序的文件可以導入它們?像這樣在fabfile中運行openwrite是否有意義?我認爲我也必須.gitignore這些類型的文件,所以他們不會承諾回購,只依靠Fabric來部署它們。

我計劃調整任何方法,最好的建議是我現在使用getfqdn或手動調整的所有配置設置。謝謝!

回答

1

你可以完成env.host的所有工作,然後使用類似the contrib template function的東西來渲染conf文件並將其推出。但模板在這些情況下是最好的(請參閱:puppet和其他配置管理器)

+0

謝謝 - 使用這個我決定讓Fabric輸出一些json作爲配置並重構我的代碼以期望這樣做。 – DeaconDesperado 2012-04-26 13:30:41