跨多个项目共享 fabfile

发布于 2024-08-27 14:52:58 字数 1406 浏览 11 评论 0 原文

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

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

此工作流程的优点之一是 fabfile.py 成为我的 Git 存储库的一部分,因此在 fabfile.pypip requirements.txt< /code>,我有一个可重新创建的 virtualenv 和部署过程。我想保持这一优势,同时变得更加DRY。看来我可以通过以下方式改进我的工作流程:

  1. 能够pip installfabfile.py中定义的常见任务并
  2. 拥有fab_config文件包含每个项目的主机配置信息并根据需要覆盖任何任务

有关如何增加DRY我的 Fabric 工作流程的性质如何?

Fabric has become my deployment tool of choice both for deploying Django projects and for initially configuring Ubuntu slices. However, my current workflow with Fabric isn't very DRY, as I find myself:

  1. copying the fabfile.py from one Django project to another and
  2. modifying the fabfile.py as needed for each project (e.g., changing the webserver_restart task from Apache to Nginx, configuring the host and SSH port, etc.).

One advantage of this workflow is that the fabfile.py becomes part of my Git repository, so between the fabfile.py and the pip requirements.txt, I have a recreateable virtualenv and deployment process. I want to keep this advantage, while becoming more DRY. It seems that I could improve my workflow by:

  1. being able to pip install the common tasks defined in the fabfile.py and
  2. having a fab_config file containing the host configuration information for each project and overriding any tasks as needed

Any recommendations on how to increase the DRYness of my Fabric workflow?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

桃扇骨 2024-09-03 14:52:58

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

I've done some work in this direction with class-based "server definitions" that include connection info and can override methods to do specific tasks in a different way. Then my stock fabfile.py (which never changes) just calls the right method on the server definition object.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文