12

将配置文件(例如 httpd.conf、my.cnf、.bashrc ...)置于版本控制之下的最佳方式是什么?除了版本控制的好处之外,我希望该解决方案也可以用作备份,这样我就可以带来一个全新的服务器并直接从 SVN 中检出(或导出)配置文件

一个好的方法是存储配置文件的原始路径。

4

6 回答 6

4

我对我的配置文件进行修订控制,但我使用git而不是 svn(当你有多台机器时这更容易)。我有一个 bash 脚本(称为install.sh),也在存储库下,它将文件复制或符号链接到机器上的适当位置。

因此,如果我需要在新机器上进行设置,我只需对存储库进行 git clone(相当于 svn checkout)并运行 myinstall.sh以在适当的位置设置我的配置文件。有install.sh周围意味着我还存储了配置文件的原始路径,正如你所指出的那样。

于 2008-10-06T15:35:26.143 回答
2

This is what I have implemented:

I have a server that does rsync of all the configs into one directory (say /data/configs/hostname/{etc,httpd}.

I have an rsync running every hour to transfer the changes. as soon as rsync is complete, there is an svnautocommit script that does autocommit of the changes. This way, I can roll back to any change or any version I want to.

You might need to plan the SVN directory structure based on your requirements.

于 2008-10-06T15:55:40.800 回答
0

As you want a central store anyway, you may go for something slightly more complicated like Slack. You administer and version control the files at a push server, then rsync it to the clients. The explanation of subroles has some examples on how to structure the tree.

于 2008-10-06T15:57:05.617 回答
0

我为几台机器执行此操作,从旧的 Solaris 8 机器到 Mac OS X,我有一个非常简单的布局:

在我的存储库中,我有以下内容:

<root>/common
  /.emacs.d
  /.bash_common
  /scripts # platform-independent binary tools

<root>/linux
  .bashrc
  .emacs
  ...

<root>/solaris
  .bashrc
  .emacs
  ...

<root>/osx
  .bashrc
  .emacs
  ...

每个操作系统主目录都有一个 svn:externals 对 .emacs.d、.bash_common 和脚本的引用,因此不会重复。

此外,我在 linux 和 solaris 目录中有一个 .bash_hostconfig 具有特定于主机的路径配置等,因为我在工作中的设置与我在家里的设置非常不同(FC5-8 和 RHEL3-5,取决于我在哪里是)。

因此,在这些事情之间,我有一个在新机器上启动和运行的非常简单的过程:我只需将 /$platform 检出到一个临时目录中,然后用这些文件覆盖 $HOME 中的所有内容。我不需要存储原始路径,因为它总是以这种方式相对于 $HOME 。

于 2008-10-06T15:34:52.900 回答
0

我们使用 CVS 将配置存储在一个尽可能扁平的目录结构中。这种技术很容易扩展到 SVN。

然后我们设置了一个 Makefile 以使用 CVS 导出到:

  1. 创建没有 CVS 组件的 CVS 目录结构的副本,
  2. 在本地目录中创建目标机器所需的目录结构,就像在目标机器的根目录中一样,例如 ./my_cvs_dir/etc/.. 和 ./my_cvs_dir/usr/local/newapp/..,
  3. 将文件从 CVS 结构复制到目标目录结构,
  4. 为目标目录结构创建一个 tarball,以及
  5. 将 tarball 部署到目标计算机。

我们还设置了这些 tarball 以增加专业化,例如 Sol10、Apache、特定应用程序等。

高温高压

干杯,

于 2008-10-06T15:37:02.163 回答
0

好吧,您可以将所有配置文件存储在特定的目录树下,每个应用程序一个子目录。由于大多数应用程序应该有一个指令来指定配置路径,因此这是每个服务器唯一需要更改的内容(或者如果您有硬编码的配置文件,可能支持 include 之类的东西)。

然后可以将这棵树检查到您喜欢的任何 VCS 中。

对于部署,您可以编写一个 shell 脚本或类似的东西来初始化所有内容以使用您的配置文件树。

于 2008-10-06T15:37:04.660 回答