代码之家  ›  专栏  ›  技术社区  ›  duckyflip

把配置文件保存在SVN下的最佳方法?

  •  12
  • duckyflip  · 技术社区  · 16 年前

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

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

    6 回复  |  直到 16 年前
        1
  •  4
  •   EfForEffort    16 年前

    我的版本控制我的配置文件,但我使用 git 而不是svn(当您有多台机器时更容易)。我有一个bash脚本(称为 install.sh ),也在存储库下,该存储库将文件复制或符号链接到计算机上的相应位置。

    因此,如果我需要在一台新机器上设置,我只需对存储库执行git克隆(相当于svn签出),然后运行 安装.sh 在适当的位置设置我的配置文件。有 安装.sh around意味着我还存储了配置文件的原始路径,正如您所希望的那样。

        2
  •  2
  •   Ram Prasad    16 年前

    这就是我所实施的:

    我有一个服务器,它将所有配置rsync到一个目录中(比如/data/configs/hostname/{etc,httpd})。

    我每小时运行一个rsync来传输更改。一旦rsync完成,就会有一个svnautocommit脚本自动提交更改。这样,我可以回滚到任何更改或任何版本。

    您可能需要根据您的需求规划SVN目录结构。

        3
  •  0
  •   Chris R    16 年前

    我在几台机器上做这个,从旧的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都有一个对.emacs.d、.bash_common和脚本的svn:externals引用,因此它们不会重复。

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

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

        4
  •  0
  •   Rob Wells    16 年前

    我们使用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、特定应用程序等。

    高温高压

    干杯,

    抢劫

        5
  •  0
  •   Fionn    16 年前

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

    然后这棵树就可以被签入你喜欢的任何风投。

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

        6
  •  0
  •   pklausner    16 年前

    不管怎样,如果你想要一个中心商店,你可以买一些稍微复杂一点的东西,比如 Slack . 在推送服务器上管理和版本控制文件,然后将其rsync到客户端。这个 explanation of subroles 有一些关于如何构造树的示例。