Git Repo在多个服务器上维护应用程序configuration

我需要在GIT存储库中进行版本控制,特定平台的configuration分布在多个服务器上。 考虑到在每个这些服务器中有完全不同的configuration,而应用程序是相同的。 做这个的最好方式是什么?

  1. 为每个服务器创build一个分支

    • repository.git:conf – > [分支服务器1]
    • repository.git:conf – > [branch Server 2]
    • repository.git:conf – > [branch Server N]
    • 注意:这个方法在我看来,很难维护,因为每次服务器configuration的变化,我都需要创build子分支,这就变得混乱了。
  2. 为每个服务器创build一个具有不同目录的单个回购

    • repository.git:conf /服务器1
    • repository.git:conf /服务器2
    • repository.git:conf /服务器N
    • 注意:这很容易维护
  3. 为每个服务器创build一个回购

    • repository_1.git:CONF
    • repository_2.git:CONF
    • repository_N.git:CONF
    • 注意:这个方法需要我为每个新服务器创build一个分支。

还有其他方法,这种情况下的最佳做法是什么? 我应该使用我觉得最舒服的那个吗?

韩国社交协会,

Gulden PT

Bcfg2是一个很好的configurationpipe理系统,可以用于任何版本控制系统。

我为所pipe理的所有系统使用一个存储库。 Bcfg2通过附加主机名或组名来优化文件名来处理不同机器和组的configuration文件的差异。 Bcfg2为您的系统提供每个ConfigFile条目的最具体的文件。

所以,在你的configuration描述中你将会有:

<ConfigFile name="/etc/network/interfaces" /> 

你的configuration文件将是:

 # ls Cfg/etc/network/interfaces interfaces interfaces.H_server1 interfaces.H_server2 

用Bcfg2比Puppet和Cfengine看到的主要好处是,Bcfg2不是运行脚本来configuration系统,而是决定你的系统如何不符合你的规范,并做出必要的修改。

实际上,最简单的方法是通过configurationpipe理工具来运行所有的东西。 我更喜欢厨师,但木偶和cfengine也解决了同样的问题。 厨师,至less是build立的意图或期望的configuration将被存储在版本控制。

但是,如果不重做基础架构,您应该将单个configuration文件复制到一个公共目录,确保如果这些文件没有被命名为不言而喻的,则将它们包装在一个感性命名的文件夹中,在服务器名称。

所以:

 --networkDrive ----ServerName1 ------WebServerConfig ------AppServerConfig ----ServerName ------AnotherAppConfig ----ServerName 

…等等…

从那里可以很容易的把它和提交(这也很容易脚本)。