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

Dav*_*e K 85 linux version-control

在有多个系统管理员的环境中,我看到将服务器配置文件添加到版本控制系统中的一些优势。最值得注意的是跟踪更改的能力,谁做出了更改,当然还能够回滚到已知的工作配置。

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

8je*_*ean 52

我已经在家里(~ 3 台主机)测试了一段时间,尝试了不同的 scm(RCS、Subversion、git)。现在最适合我的设置是带有setgitperms钩子的git 。

您需要考虑的事项:

处理文件权限和所有权

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

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

  • RCS:无论如何只适用于单个文件。
  • Subversion:我发现这很棘手。
  • git: no probem, 把“ *”放在顶级.gitignore文件中,只添加那些你想使用的文件git add --force

最后,还有在一些有问题的目录,/etc而软件包可以丢弃的配置片段,然后由某些程序或进程(读/etc/cron.d/etc/modprobe.d等等)。其中一些程序足够智能,可以忽略 RCS 文件(例如 cron),有些则不是(例如 modprobe)。用同样的事.svn 目录。git 的一大优点(只创建一个顶级.git 目录)。


pjz*_*pjz 28

我已经用 git 非正式地完成了它,但还有etckeeper项目,它是一个更完整和详细的实现。

  • etckeeper 非常好 - 它处理恢复权限(git、hg 等不支持)并支持您选择的后端(包括 git、hg、bazaar 等)。还集成到 APT 中,因此每次执行 apt-get 操作时,都会提交 /etc 存储库,并进行隔夜提交。我已经使用了一段时间,总的来说,它比使用 vanilla VCS 好得多,如果只是为了权限功能。 (4认同)

ber*_*ich 23

另一种选择是使用自动化服务器配置工具(如PuppetCfengine)以声明性语言编写服务器配置脚本。

这是前端的额外工作,但是使用像 Puppet 这样的实用程序可以让您在很少人工干预的情况下自动重建和配置服务器。

  • 是的,但您还应该对您的 Puppet/CFengine 配置进行修订控制。我也喜欢对输出进行修订控制,这样您就可以回答“日期 x 上的配置是什么?”的问题。以及“根据 puppet 配置应该是什么?”,并将输入与输出相关联,以便对配置管理系统进行故障排除。 (5认同)

Zor*_*che 10

我一直在试验etckeeper,它似乎工作得很好。我不需要中央服务器,这在某些情况下可能很重要。您可以使用多种不同的 DVCS 后端,因此您可以选择最熟悉的一种。它似乎对我来说效果很好,但我还没有尝试让我工作的其他技术人员开始使用它。


blu*_*ana 6

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

但是还没有尝试过,您必须使用适当的 gem 在客户端和服务器上安装 Ruby(这确实不难)。总的来说,一次管理多台服务器看起来真的很容易。