在版本控制下保留配置文件(例如httpd.conf,my.cnf,.bashrc ...)的最佳方法是什么? 为了版本化的好处,我希望解决方案也可以作为备份,这样我就可以带来一个全新的服务器并直接从SVN中签出(或导出)配置文件
一个好的方法是存储配置文件的原始路径。
答案 0 :(得分:4)
我修改控制我的配置文件,但我使用git而不是svn(当你有多台机器时这更容易)。我有一个bash脚本(称为install.sh
),也位于存储库下,可以将文件复制或符号链接到计算机上的适当位置。
因此,如果我需要在新机器上进行设置,我只需要对存储库进行git克隆(相当于svn checkout)并运行我的install.sh
来设置适当的配置文件位置。 install.sh
周围意味着我也存储了配置文件的原始路径,正如您所说的那样。
答案 1 :(得分:2)
这就是我实施的内容:
我有一台服务器将所有配置的rsync同步到一个目录中(比如/ data / configs / hostname / {etc,httpd}。
我每小时运行一次rsync来传输更改。一旦rsync完成,就会有一个svnautocommit脚本自动提交更改。这样,我可以回滚到我想要的任何更改或任何版本。
您可能需要根据您的要求规划SVN目录结构。
答案 2 :(得分: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
...
每个OS homedir都有一个svn:externals引用.emacs.d,.bash_common和脚本,因此不会重复。
另外,我在linux和solaris目录中有一个.bash_hostconfig,具有特定于主机的路径配置等,因为我在工作时的设置与在家时的设置非常不同(FC5-8和RHEL3-5,具体取决于在哪里我。)
所以,在这些事情之间,我有一个非常简单的启动和运行新机器的过程:我只需将/ $平台检入一个临时目录,然后用这些文件覆盖$ HOME中的所有内容。我不需要存储原始路径,因为它总是以这种方式相对于$ HOME。
答案 3 :(得分:0)
我们使用CVS将配置存储在尽可能平坦的目录结构中。这种技术很容易扩展到SVN。
然后我们将Makefile设置为使用CVS导出到:
我们还设置了这些tarball,以增加专业化,例如: Sol10,Apache,特定应用程序等。
HTH
欢呼声,
Rob
答案 4 :(得分:0)
您可以将所有配置文件存储在特定目录树下,每个应用程序一个子目录。由于大多数应用程序都应该有一个指令来指定配置路径,因此每个服务器只能更改(或者如果你有硬编码的配置文件,可能包括include)。
然后可以将此树检入您喜欢的任何VCS。
对于部署,您可以编写一个shell脚本或类似的东西来初始化所有内容以使用您的配置文件树。
答案 5 :(得分:0)
无论如何你想要一个中央商店,你可能会选择一些稍微复杂的东西,比如 Slack 。您可以在推送服务器上管理和版本控制文件,然后将其同步到客户端。 explanation of subroles有一些关于如何构造树的例子。