1

是否有任何工具,例如Django South数据库迁移应用程序,但用于迁移整个服务器配置?

我完全通过源代码管理管理多个服务器配置。Django 应用程序代码、Apache 配置、负载均衡器配置、Ubuntu 软件包列表,所有内容都列在配置文件中,并可通过Fabric命令进行部署。但是,我仍然需要手动确定更改的内容,并决定依次运行哪些部署命令以使服务器与我的配置文件匹配。

理想情况下,我想以 South 管理我的数据库模式的方式来管理我的服务器。更改代码后,我想生成“模式迁移”,这将确定是否需要重写 Apache.conf、是否需要上传静态媒体、是否需要安装新的系统包等.

我看过一些传统的配置管理工具,但即使是最大的工具,比如 Chef 和 Puppet,似乎也没有这样的功能,而且通常不是幂等的。我自己与 Chef 的亲身经历表明,这在一定程度上是它的目标,但它通常无法实现这一点,并且众所周知难以定制和调试。

有谁知道具有此功能的工具?

4

1 回答 1

0

我们使用EntryPoints

我们有一个简单的工具,它调用它可以找到的所有入口点。

我们最常使用的入口点是“重启”。

在“重新启动”时,文档得到更新,wsgi 文件被触及以重新启动工作进程。如果需要更改文件系统(愚蠢的示例:将目录“temp”重命名为“tmp”),请执行此操作。

该工具不跟踪已经完成的历史。这意味着每次重新启动都会检查是否仍有目录“temp”。那就是幂等性

到目前为止,重启仍然足够快。每个 EntryPoint 实现都可以使用某种快捷方式来检查它是否已经完成(例如“触摸”文件“var/entrypoints/do-foo.done”)。

我们不为此使用 django 的 manage-command,因为我们使用它来设置系统。如果系统设置好,django 还不可用。

但请记住:配置比编程更好:如果多个应用程序需要符号链接,最好实现一个入口点,该入口点询问(再次每个入口点)其他应用程序:您需要什么符号链接?

于 2014-01-20T08:23:46.110 回答