![有哪些解决方案可以允许使用服务器配置文件的修订控制?](https://linux22.com/image/481663/%E6%9C%89%E5%93%AA%E4%BA%9B%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%E5%8F%AF%E4%BB%A5%E5%85%81%E8%AE%B8%E4%BD%BF%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E7%9A%84%E4%BF%AE%E8%AE%A2%E6%8E%A7%E5%88%B6%EF%BC%9F%20.png)
在有多个系统管理员的环境中,我发现将服务器配置文件添加到修订控制系统有几个好处。最明显的是能够跟踪更改、更改者,当然还有能够回滚到已知的工作配置。
我主要对 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项目是一个更加完整和详细的实施方案。