我剛開始使用結構來更好地控制測試和部署環境的特定設置,並試圖瞭解交換配置的最佳方法。使用結構來操縱數據庫連接
比方說,我在我的應用程序的模塊定義了一個簡單的數據庫連接,並且默認的一些常量進行身份驗證:
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中運行open
和write
是否有意義?我認爲我也必須.gitignore
這些類型的文件,所以他們不會承諾回購,只依靠Fabric來部署它們。
我計劃調整任何方法,最好的建議是我現在使用getfqdn
或手動調整的所有配置設置。謝謝!
謝謝 - 使用這個我決定讓Fabric輸出一些json作爲配置並重構我的代碼以期望這樣做。 – DeaconDesperado 2012-04-26 13:30:41