2010-03-31 149 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(永远不会改变)只是在服务器定义对象上调用正确的方法。