Python:用于追踪部署的工具

5
我正在寻找一种工具来跟踪“在哪里运行了什么”。我们有一堆服务器,每个服务器上都有一堆项目。这些项目可能在特定版本(hg tag/commit nr)上运行,并且其要求也需要特定版本。
Fabric看起来是一个很好的开始,可以通过自动化ssh部分来执行实际部署。然而,一旦部署完成,就没有概述说明做了什么。
在重新发明轮子之前,我想在此检查一下(我已经尽力使用Google搜索,但可能使用了错误的关键字)。是否已经有这样的工具?
(实际上,我正在部署Django项目,但我不确定这与问题有关;任何跟踪pip/virtualenv安装或服务器状态的工具都应该可以)
感谢您的帮助,
Klaas
==========
暂时解决方案编辑
==========
目前,我们选择将此信息存储在简单的键值存储中(在我们的情况下:文件系统),并非常注意备份(在我们的情况下:使用DCVS)。我们使用相同的部署工具来跟踪此存储(在我们的情况下:fabric)。
密码存储在TrueCrypt卷中,该卷存储在我们的键值存储中。
==========
如果这个问题的某种开源解决方案出现,我仍然会很高兴接受任何答案。我可能会在不久的将来在某个地方分享我们自己的解决方案。
2个回答

1

pip freeze 可以列出所有已安装的软件包。奖励:如果将输出重定向到文件,则可以将其作为部署过程的一部分使用,以安装所有这些软件包(pip 可以从文件中编程方式安装所有软件包)。

我看到你已经在使用 virtualenv 了。很好。您可以运行 pip freeze -E myvirtualenv > myproject.reqs 生成一个依赖文件,该文件同时兼具 Python 环境的状态报告。


谢谢你的回答。我已经在使用pip freeze,但我想知道是否有一种综合工具可以跟踪多个项目(可能有多个版本)在多个服务器上的状态。 - Klaas van Schelven

0

也许你想要类似于Opscode Chef.这样的东西。

用他们自己的话来说:

Chef的工作原理是允许您编写描述如何配置服务器部分(例如Apache、MySQL或Hadoop)的配方。这些配方描述了一系列应处于特定状态的资源,例如应安装的软件包、应运行的服务或应编写的文件。然后,我们确保每个资源都被正确配置,只在必要时采取纠正措施。结果是一种安全、灵活的机制,确保您的服务器始终按照您的要求运行。

编辑:请注意,Chef不是Python工具,它是一个通用工具,用Ruby编写(似乎)。但它能够支持各种“食谱”,包括用于安装/维护Python应用程序的食谱。


那还不太行:我更希望找到一种更优雅的解决方案来跟踪各个服务器上的一堆项目,而不是寻找将代码放在服务器上的实际方法。后者问题似乎有多种解决方式,但前者却没有。 - Klaas van Schelven
跟踪安装在哪里的内容基本上是“秘密酱料”。做得好的人/实体似乎并不太喜欢大声宣扬。可能是因为所说的“酱料”非常依赖于基础设施。 - Pavel Repin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接