4

我目前正在修补 OpenBSD 系统,以期为自己构建防火墙和其他一些零碎的东西。

由于这是相当实验性的(我是 OpenBSD n00b,并且我已经将我的系统破坏了 3 或 4 次),我想知道其他人在制作部分或全部文件系统方面有什么经验(我特别想/etc) 一些 VCS 或其他的工作副本。

  • 这是一个好主意吗?

  • 我特别感兴趣的是人们为此使用了哪些 VCS。我正在考虑颠覆、集市和 git;这不会是一个共享存储库,所以我可能对基本的 vcs 功能比分布式或非分布式参数更感兴趣。

  • 我还想听听人们发现的想象或实际陷阱。我可以想象文件所有权和权限的保存需要仔细考虑!

  • 当然,任何不涉及 VCS 的替代方法

4

7 回答 7

8

在这里,您有一个关于使用 git 将 /etc/ 置于修订控制之下的详细修订。

另一种循序渐进的方法。

于 2009-01-17T13:29:55.450 回答
4

对于您正在做的事情,我建议您不要从 OpenBSD 开始,而是从已经完成大部分工作的发行版开始,例如pfsense

至于 VCS 本身,您可能需要考虑这些项目成功使用的mercurial

于 2009-01-17T13:34:11.603 回答
4

我认为还没有人提到etckeeper

它将 /etc 存储在 repos(git(默认)、mercurial 或 bzr)中。它解决了保存文件所有权、权限和空目录的问题。它可以与包管理网集成(至少与 apt 集成)以自动提交在安装新包期间发生的更改到 /etc。如果安装使您自己的更改失败,那就太好了,只需回滚即可。

我已经在 Ubuntu 中成功使用了一段时间。

于 2009-11-28T22:18:29.407 回答
2

我在“Gnu/Linux Magazine France”中读到了一些相关内容。这家伙使用 rsync 从 /etc 到 root/ 然后通过 subversion 存储它,而不创建工作副本。

我将引用该杂志的一些内容。

好的,在示例中,服务器运行 freeBSD 并且是“sparky”,而要保存的机器在 debian 下并且是“副本”。创建用户“副本”。

在 /usr/local/etc/ssh/sshd_config 添加:

Match User replica
X11Forwarding no
AllowTcpForwarding no
ForceCommand /usr/local/bin/svnserv -t -r /home/replica/svnrepo -tunnel-user=replica

创建存储库

sparky # svnadmin 创建 /home/replica/svnrepo

修复权限:

sparky # chown -R replica:nogroup /home/replica
sparky # chown -R o-rwx /home/replica
sparky # chown -R g-rwx /home/replica

客户端:

安装颠覆

replica # mkdir -p /root/scripts/svnrepo
replica # rsync -av /etc /root/scripts/svnrepo

export SVN_SSH ="ssh -i /root/.ssh/id_rsa"
svn import -m "replica config files" /root/scripts/svnrepos svn+ssh://replica@sparky/home/replica/svnrepo

现在,我们的文件夹还不是工作副本,所以我们必须制作它。你能创建一个 .svn 文件吗?他不能:)

cd /root/scripts
mv svnrepo svnrepo.old
svn checkout svn+ssh://replica@sparky/home/replica/svnrepo

现在尝试修改 etc 中的文件,例如主机。

再次同步。您应该只获取修改后的文件,即复制 /etc/hosts。

现在你可以提交:

svn commit -m "backup 1" /root/scripts/svnrepo

还有最后一件事。如果你想让一个文件被颠覆,它必须被添加。因此,例如,如果您在 /etc 中创建一个新文件,默认情况下它不会被保存。

要做什么?

svn status /root/scripts/svnrepo | grep -e '^!' | awk '{ print $2 }' | xargs -r svn delete 
svn status /root/scripts/svnrepo | grep -e '^?' | awk '{ print $2 }' | xargs -r svn add

然后,您必须制作自己的脚本。

希望这可以帮助。

(gtg,我稍后会编辑以设置标题,如果没有人这样做的话)

于 2009-01-17T13:22:04.000 回答
2

不仅仅是在修订控制系统中拥有配置文件,我建议使用诸如ChefPuppet之类的配置管理系统来管理配置文件的内容、权限和其他详细信息,例如在配置文件更改时重新启动应用程序,以及管理git/subversion/yourfavoriteVCS 中的那些文件。

于 2009-02-18T00:14:48.397 回答
1

我管理的每台服务器上的 /etc 中的所有内容(300 + 并且还在计数)都在Mercurial下。为什么?

  • 对于曾经使用过 SVN 或 CVS 的任何人来说,它都易于使用(如果您没有,那么您在我的生产机器上的 /etc 中没有业务)
  • 它可以轻松地将更改从一台服务器的配置拉到许多其他服务器
  • 当其他管理员有脑子放屁时,我可以快速回滚

在这种情况下,对于太少的问题,Git 的功能太强大了。由于 HG 是 DVCS,因此提交和回滚是干净且容易的。我也使用 HG 来管理我的大部分网站

它不仅适用于源代码 :) 另一个更基本的选择是使用某种版本控制文件系统,它在写入时拍摄快照 (CoW),DVCS 更容易。

于 2009-01-17T18:33:23.060 回答
0

反馈:我最终做了什么

(@Aif,感谢您的温柔提醒,我的礼貌有点缺失)

我使用 /etc 作为 git 存储库,但由于我对此(我,不是 git)仍然有点不安,我正在手动执行 gitwork。

作为一个副作用,我开始了一个小项目来评估,并列,颠覆,git,集市,mercurial,单调,darcs,和化石,虽然在更一般的版本管理上下文(合并等)。


我对你的回答的反应

感谢大家的帮助。我在选择接受哪个答案时遇到了一些困难,所以如果不是你的,请相信我,我也很感激你的。

@路易斯梅尔格拉蒂

路易斯,感谢您提供了一些出色的参考资料。我已接受您的回答为最有用的。


@康拉德

康拉德,我很欣赏你的两个建议。

我当然会调查pfsense,尽管我的目标之一是真正弄脏我的手,以及建立防火墙,所以“制造而不是获取”很重要。

至于 Mercurial,我没有将它包含在我的列表中,因为我已经尝试过(以前),并且我觉得我“更喜欢”集市,而 git 乍一看似乎有很大的力量(诚然,我可能不需要)。我目前的“主要”VCS 是 Subversion,但我不确定它是否适合这种情况。因此列出了三个。

(我现在查看了 pfsense 并在我的网络上启动了它。非常好,但我完全不确定我的手是否会稍微弄脏......)


@艾夫

谢谢,艾夫。我肯定会尝试一下,尽管我怀疑我最终会使用 git。


@小叮当

感谢您对 Mercurial 的看法,我现在计划重新访问,尽管我对 Bazaar 很满意。


@每维克兰德

感谢您提出非常有趣的建议!当我可以从当前的工作堆下脱身时,我肯定会看看 etckeeper。

于 2009-01-17T13:51:26.780 回答