Fabric已成为我选择的部署工具,既用于部署Django项目,又用于初始配置Ubuntu slices。但是,我目前使用Fabric的工作流程不是很DRY,因为我发现自己:
fabfile.py
从一个Django项目复制到另一个fabfile.py
(例如,将webserver_restart
任务从Apache更改为Nginx,配置主机和SSH端口等)。 此工作流程的一个优势是
fabfile.py
成为了Git存储库的一部分,因此在fabfile.py
和pip requirements.txt
之间,我具有可重新创建的virtualenv和部署过程。我想保留这个优势,同时变得更加DRY。看来我可以通过以下方法改善工作流程:pip install
fabfile.py
和fab_config
文件,该文件包含每个项目的主机配置信息,并根据需要覆盖所有任务关于如何增加DRY工作流程的Fabric的任何建议?
最佳答案
我已经使用包含连接信息的基于类的“服务器定义”朝着这个方向做了一些工作,并且可以覆盖方法以不同的方式完成特定任务。然后,我的库存fabfile.py(永不更改)仅在服务器定义对象上调用正确的方法。
关于deployment - 在多个项目中共享fabfile,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2553963/