2011-05-13 46 views
5

我正在寻找一种工具来跟踪“哪里运行的是什么”。我们有一堆服务器,以及这些项目中的每一个。这些项目可能在特定版本(hg tag/commit nr)上运行,并且在特定版本中也有它们的要求。Python:跟踪部署的工具

Fabric通过自动执行ssh部分看起来像是一个很好的开始。但是,一旦完成部署,就不会有什么概述。

在重新发明轮子之前,我想在这里检查一下(我尽了最大的努力,但可能会寻找错误的关键字)。有没有这样的工具?

(在实践中,我部署Django的项目,但我不知道这是有关的问题;任何保持PIP的跟踪/ virtualenv中安装或一般服务器状态应该是罚款)

千恩万谢,

克拉斯

==========

编辑TEMP。 SOLUTION

==========

现在,我们选择简单地存放在一个简单的key-value存储该信息(在我们的例子:文件系统),我们采取非常小心备份(在我们的情况下:使用DCVS)。我们使用与我们用于执行实际部署的相同部署工具(我们的案例:结构)跟踪此商店

密码存储在存储在我们的键值存储区内的TrueCrypt卷内。

==========

我还是会欣然接受任何的答案时,某种开源解决这个问题的地方弹出。我可能会在不久的将来在某个地方分享(部分)我们的解决方案。

回答

1

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

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

+0

感谢您的回答。我已经在使用pip freeze了,但我想知道这是否是一种综合工具,可以在多台服务器上跟踪多个项目(可能有多个版本)的状态。 – 2011-05-13 08:12:58

0

也许你想要的东西,像OpscodeChef.

在他们自己的话说:

厨师工作原理是让你写 食谱,描述你希望你的服务器的 部分(如Apache , MySQL或Hadoop)进行配置。 这些食谱描述了一系列的 资源,应该在一个 特定状态 - 例如, 包应该安装, 服务应该运行,或应写入 文件。然后我们 确保每个资源都是正确配置的 ,只需要 纠正措施,当它是 需要。其结果是一个安全的, 灵活的机制,以确保您的服务器始终运行 确切地如何您希望他们成为 。

编辑:注意厨师是不是Python的工具,它是一个通用的工具,用Ruby编写的(似乎)。但它能够支持各种“食谱”,其中包括安装/维护Python apps.

+0

这还不够:我更多地寻找一种更优雅的解决方案来跟踪各种服务器上的一堆项目,而不是寻找在服务器上获取代码的实际方式。后一个问题似乎以各种方式解决,前者不是。 – 2011-05-13 17:00:36

+0

保持跟踪什么安装在哪里几乎是“秘密酱油”。做得好的人/实体似乎并不直言不讳。可能因为所说的“sause”是非常基础设施特定的。 – 2011-05-13 19:33:57