Fabric已成为我选择的部署工具,既用于部署Django项目,又用于初始配置Ubuntu slices。但是,我目前使用Fabric的工作流程不是很DRY,因为我发现自己:

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

  • 此工作流程的一个优势是fabfile.py成为了Git存储库的一部分,因此在fabfile.pypip requirements.txt之间,我具有可重新创建的virtualenv和部署过程。我想保留这个优势,同时变得更加DRY。看来我可以通过以下方法改善工作流程:
  • 能够pip install fabfile.py
  • 中定义的常见任务
  • 具有一个fab_config文件,该文件包含每个项目的主机配置信息,并根据需要覆盖所有任务

  • 关于如何增加DRY工作流程的Fabric的任何建议?

    最佳答案

    我已经使用包含连接信息的基于类的“服务器定义”朝着这个方向做了一些工作,并且可以覆盖方法以不同的方式完成特定任务。然后,我的库存fabfile.py(永不更改)仅在服务器定义对象上调用正确的方法。

    关于deployment - 在多个项目中共享fabfile,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2553963/

    10-12 14:21