有哪些解决方案可以允许使用服务器配置文件的修订控制?

有哪些解决方案可以允许使用服务器配置文件的修订控制?

在有多个系统管理员的环境中,我发现将服务器配置文件添加到修订控制系统有几个好处。最明显的是能够跟踪更改、更改者,当然还有能够回滚到已知的工作配置。

我主要对 Unix/Linux 解决方案感兴趣,但也对 Windows 实现感兴趣。

答案1

我已经在家里(约 3 个主机)测试了一段时间,尝试了不同的 scms(RCS、Subversion、git)。目前最适合我的设置是 git,setgitperms钩。

您需要考虑的事项:

处理文件权限和所有权

  • RCS:本机执行此操作
  • Subversion:上次我尝试过,你需要一个包装器来svn做到这一点
  • git:setgitperms钩子可以透明地处理这个问题(不过,需要较新版本的 git 来支持post-checkout钩子)

另外,如果您不想对所有文件/etc进行版本控制,而只对实际修改过的文件进行版本控制(像我一样),那么您将需要一个支持这种使用的 scm。

  • RCS:无论如何只对单个文件有效。
  • 颠覆:我发现这很棘手。
  • git:没问题,将“ *”放在顶层.gitignore文件中,然后只添加你想要使用的文件git add --force

最后,有些目录有问题,/etc软件包可以在这些目录中放置配置片段,然后由某些程序或守护进程(/etc/cron.d/etc/modprobe.d等)读取。其中一些程序足够智能,可以忽略 RCS 文件(例如 cron),而有些则不能(例如 modprobe)。目录也是如此.svn 。这又是 git 的一大优势(仅创建一个顶级.git 目录)。

答案2

我已经用 git 非正式地完成了这件事,但还有etckeeper项目是一个更加完整和详细的实施方案。

答案3

另一个选择是使用自动服务器配置工具,例如木偶或者引擎使用声明性语言编写服务器配置脚本。

这是前端的额外工作,但使用像 Puppet 这样的实用程序允许您自动重建和配置服务器,几乎不需要人工干预。

答案4

我一直在调查厨师最近。它不仅保持可模板化(.erb)配置在版本控制中,但允许您执行操作(如重启服务在您将配置上传到节点后)。Chef 可帮助进行包管理,以便您可以验证依赖关系与您交互的任何节点(即必须安装 sudo 包)。Chef 似乎很容易在 Ruby 中扩展,因此如果您有任何自定义流程,您只需在提供的框架内编写脚本即可。

但还没有尝试过,你必须在客户端和服务器上安装 Ruby 和适当的 gem(这其实并不难)。总的来说,同时管理多个服务器确实很容易。

相关内容