有没有像Django South数据库迁移应用程序这样的工具,但用于迁移整个服务器配置?
我完全通过源代码管理来管理几个服务器配置。Django应用程序代码、Apache配置、负载均衡器配置、Ubuntu包列表,所有内容都列在配置文件中,并可通过Fabric命令进行部署。但是,我仍然需要手动确定更改了什么,并决定按顺序运行哪些部署命令,以使服务器与我的配置文件匹配。
理想情况下,我希望以South管理数据库模式的方式来管理我的服务器。在我更改代码后,我想生成一个"模式迁移",它将决定是否需要重写Apache.conf,是否需要上传静态媒体,是否需要安装新的系统包,等等。
我已经研究了一些传统的配置管理工具,但即使是最大的工具,如Chef和Puppet,似乎也没有这样的功能,而且通常不是幂等的。我自己在Chef的亲身经历表明,这在一定程度上是它的目标,但它通常无法实现这一点,而且定制和调试也非常困难。
有人知道具有此功能的工具吗?
我们使用EntryPoints。
我们有一个简单的工具,可以调用它能找到的所有入口点。
对我们来说,最常用的切入点是"重启"。
在"重新启动"文档时,会更新wsgi文件以重新启动工作进程。如果需要更改文件系统(愚蠢的例子:将目录"temp"重命名为"tmp"),请执行此操作
该工具不跟踪已经完成的工作的历史。这意味着每次重新启动都会检查目录"temp"是否仍然存在。这就是Idemptence。
到目前为止,重新启动仍然足够快。每个EntryPoint实现都可以使用某种快捷方式来检查是否已经完成(例如"触摸"一个文件"var/entrypoints/do-foo.done")
我们不使用django的manage命令,因为我们使用它来设置系统。如果建立了一个系统,django还不可用。
但请记住:配置比编程更好:如果几个应用程序需要符号链接,最好实现一个入口点,该入口点(再次按每个入口点)询问其他应用程序:你需要什么符号链接?