系统配置文件的git repo的最佳实践(nginx / php.ini等)

时间:2018-05-16 21:56:32

标签: git

我在CentOS 6盒子上有一个相当(我认为)的正常设置。

我的网站位于/ var / www / sites。

  • 的/ var / WWW /位点/站点1
  • 的/ var / WWW /位点/站点2
  • 等...

我在每个文件夹中都有一个git repo。

我想为各种配置文件创建一个git repo:

  • /etc/nginx.conf
  • 的/ etc / nginx的/位点可用/
  • /etc/php.ini中
  • 的/etc/my.cnf
  • 等...

我觉得我可以在/ etc /文件夹中创建一个git repo,有一个带有*通配符的.gitignore来忽略所有,然后强制添加我感兴趣的特定文件。这是不好的做法?感觉有点"脏"不知。

如果我决定在/ etc /之外有一个重要文件,我喜欢怎么办,也许某些配置最终会在/ opt /中结束。所以也许我应该在/上创建一个回购。嗯,开始觉得更脏,特别是因为这个回购会然后包含"我的网站回购...即使他们被通配符.gitignore排除 - 它似乎有点......错了。是吗?

我想另一种方法是创建一个带有repo的/ config /目录,将所有相关文件移动到它,然后为预期文件的位置添加符号链接。不知道这是否会导致不必要的并发症/问题?

据推测,我并不是第一个想要"配置回购的人。 - 大多数人最终会做什么?

由于

1 个答案:

答案 0 :(得分:2)

正如@KamilKiełczewski的评论所指出的那样,依靠Docker容器来隔离和设置服务器的自定义配置是一种很好的方法。

否则,对于直接依赖配置主机的更传统方法,您可能需要尝试以下三种策略之一:

  1. 使用etckeeper;
  2. 管理整个/etc文件夹的单个Git存储库
  3. 使用vcsh和optionaly myrepos的自定义配置管理/etc文件夹(部分)的多个Git存储库;
  4. 或者依赖GNU stow和符号链接,使用类似于that article的方法......
  5. 乍一看我会说选择3会更难维护(因为符号链接开销),如果您只需要跟踪单个服务器的所有/etc个文件,那么选择1就可以了备份目的,选择2将是更有前途的方法(虽然我没有在具体的上下文中自己测试)。

    另外,请注意Git不像大多数/etc文件那样精确地支持文件权限,但是在这方面已经专门设计了etckeeper来改进Git。