跨多个项目共享fabfile

Mat*_*kin 5 deployment workflow pip dry fabric

Fabric已成为部署Django项目和初始配置Ubuntu 切片的首选部署工具.但是,我目前使用Fabric的工作流程并不是很,因为我发现自己:

  1. fabfile.py一个Django项目复制到另一个项目
  2. 修改fabfile.py每个项目所需的内容(例如,将webserver_restart任务从Apache 更改为Nginx,配置主机和SSH端口等).

这个工作流程的一个优点是它fabfile.py成为我的Git存储库的一部分,因此在pipfabfile.pypip 之间requirements.txt,我有一个可重新创建的virtualenv和部署过程.我希望保持这种优势,同时变得更加干燥.我似乎可以通过以下方式改进我的工作流程:

  1. 能够和和中pip install定义的共同任务fabfile.py
  2. 拥有一个fab_config文件,其中包含每个项目的主机配置信息,并根据需要覆盖任何任务

如何增加任何建议DRY我的内斯面料的工作流程?

Car*_*yer 2

我已经在这个方向上使用基于类的“服务器定义”做了一些工作,其中包括连接信息,并且可以重写方法以以不同的方式执行特定任务。然后我的库存 fabfile.py (永远不会改变)只是在服务器定义对象上调用正确的方法。