在我和一个网络架构师之间,我们管理一堆Web服务器(FreeBSD)。他负责所有服务器/网络相关的东西(ip,防火墙,用户/组等),我负责所有网络相关的东西(Apache, PHP, MySQL)。有时职责重叠。
有几次我们对配置文件做了一些改变,这些改变或多或少地影响了服务器,我们无法弄清楚是谁做了这些改变,以及为什么。
作为一名Web开发人员,我认为将文件置于版本控制之下(我们目前使用Subversion)是一个很好的做法,这样每当我们更改任何东西时,我们都必须提交对更改的注释。它将解决所有不知道谁做了什么以及为什么做的问题。
我正在考虑的特定配置文件是:
- 防火墙配置
- apache config (with extra)
- php config (php.ini)MySQL config (my.conf)
我已经知道,服务器配置文件的版本控制的想法是基于这里问的其他问题。我唯一担心的是如何在Web服务器端正确地做到这一点,因为文件在不同的位置。将整个/usr/local/etc
置于版本控制之下似乎毫无意义,因为它不仅包含配置文件。
我想知道是否不创建一个新的文件夹,说/config
,这将是在版本控制下,将包含我们需要的所有配置文件,然后用符号链接替换原始的/config
文件夹中的文件。例如:
/usr/local/etc/apache22/httpd.conf -> /config/apache22/httpd.conf
所以问题是:这是一个好主意吗?如果不是,什么是更好的解决方案?
如果您使用GIT,那么将整个/usr/local/etc
置于版本控制之下并非毫无意义。
- 如果您选择 ,则只能跟踪少数文件。
- 跟踪所有配置文件的工作目录的大小几乎没有变大
直接安装git,然后转到/usr/local/etc
,写git init
。这将在当前位置创建.git文件夹(基本上使这个文件夹成为一个存储库)。
然后添加你想要跟踪的配置文件:git add firewall/firewall_config.conf apache2/httpd.conf
等and commit: git commit -m "Initial Configuration"
你的配置文件现在被跟踪。
因为你是版本敏感的配置文件,我建议你设置一个内部的git服务器,比如gitlab。为每个服务器或服务器模板/镜像等创建一个git存储库。到/目录下,选择"git init"。
你可以选择你的版本控制,只使用'git add/path/to/file对你要定制的文件。
然后,'git -m 'commit comment'和'git push -u origin master'。
您看过任何专门用于做这类事情的管理工具吗?我推荐使用Puppet或Chef,因为我在以前的工作中用过它们来做这类事情。