用于保存多台机器的docker配置的Git策略

时间:2019-06-14 20:22:58

标签: linux git docker

我有很多docker主机-为了方便起见,让我们以3为例。在这3个主机上,我总共有10个应用程序。每个将是独立的,或者是堆栈的一部分。大多数应用程序确实保存一些持久性数据(配置文件等)。

我过去曾经使用过扁平的svn结构。

docker-data
  stack1
    app1
    app2
    app3
  stack2
    app4
    app5
  stack3
   app6
   app7
  app8
  app9

整个结构和配置文件将在svn下并加载到所有3台主机上。必须记住哪个主机拥有哪些应用程序,并根据需要进行更改和提交。

其中主机1 =堆栈1,主机2 =堆栈2,主机3 =堆栈3以及app8和9

作为重建的一部分,我将研究转向git和更好的结构。

我确实看到有人建议我将整个结构作为主人 每个主机都有一个分支。

master
  docker-data
    stack1
      app1
      app2
      app3
    stack2
      app4
      app5
    stack3
      app6
      app7
    app8
    app9
host1
   docker-data
    stack1
      app1
      app2
      app3   

这似乎是一个很好的方法。但是令我震惊的是如何首先进行设置。

如果我所有的应用程序都在主服务器中,那么如何初始化主机一的分支,而仅拉取应用程序1、2和3?

如果这些配置中的任何一项发生更改,我认为我会合并回主服务器。

最后,我想将app8从主机3移到host1的分支中。

这太复杂了吗?并有任何帖子或命令可以帮助我实现这一点吗?

1 个答案:

答案 0 :(得分:0)

通常,在不同的系统上使用不同的Git分支进行配置不是一个好主意,因为这样会遇到类似的问题。如果这样做,则在需要进行任何合并时也很可能会发生冲突。

一种为不同系统管理配置的典型方式是某种模板系统。例如,您可以使用Ruby的ERB编写模板,然后使用YAML配置文件配置每个主机,然后执行构建步骤,生成包含每个主机配置的输出目录。您将只有一个主分支,以及准备就绪时将合并的其他功能分支。

这种方法类似于Puppet和Ansible等其他配置系统设计的工作方式,并且通常比使用单独的分支进行单独的配置更可靠。