2010-03-31 145 views
5

Fabric已經成爲部署Django項目和初始配置Ubuntu slices的首選部署工具。但是,我現在的工作流程Fabric不是很DRY,因爲我發現自己:跨多個項目共享一個fabfile

  1. 複製fabfile.py從一個Django項目到另一個
  2. 根據需要爲每個項目(修改fabfile.py例如,改變從Apache到Nginx的webserver_restart任務,配置主機和SSH端口等)。這個工作流程的

一個優點是,fabfile.py成爲我Git庫的一部分,所以fabfile.pypiprequirements.txt之間,我有一個recreateable virtualenv和部署過程。我想保持這個優勢,同時變得更加DRY。看來,我可以提高我的工作流程是:根據需要

  1. 能夠pip installfabfile.py
  2. fab_config文件,其中包含每個項目的主機配置信息,並覆蓋任何任務定義的公共任務

有關如何增加我的Fabric工作流程的DRY的任何建議?

回答

2

我已經在這個方向上用基於類的「服務器定義」做了一些工作,這些服務器定義包括連接信息,並且可以覆蓋方法以不同的方式完成特定的任務。然後我的股票fabfile.py(永遠不會改變)只是在服務器定義對象上調用正確的方法。