我有很多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的分支中。
这太复杂了吗?并有任何帖子或命令可以帮助我实现这一点吗?
答案 0 :(得分:0)
通常,在不同的系统上使用不同的Git分支进行配置不是一个好主意,因为这样会遇到类似的问题。如果这样做,则在需要进行任何合并时也很可能会发生冲突。
一种为不同系统管理配置的典型方式是某种模板系统。例如,您可以使用Ruby的ERB编写模板,然后使用YAML配置文件配置每个主机,然后执行构建步骤,生成包含每个主机配置的输出目录。您将只有一个主分支,以及准备就绪时将合并的其他功能分支。
这种方法类似于Puppet和Ansible等其他配置系统设计的工作方式,并且通常比使用单独的分支进行单独的配置更可靠。