具有不同主名称的配置文件的版本控制?

具有不同主名称的配置文件的版本控制?

我最近决定使用版本控制系统在不同的 Linux 安装之间共享我的配置文件。

看完之后我在这个问题上找到的另一个帖子,我打算使用 git 来完成。

我会将我的/顶级 .gitignore 设置为 置于修订控制之下*,并手动添加我想要跟踪的每个配置文件(主要是来自 的文件/etc/…)。

但我不明白的是如何处理不同的主目录。例如,假设在机器 AI/home/foo/.vimrc和机器 B 上/home/bar/.vimrc,我如何让 git 将两个文件保存在同一个版本控制存储库下?

[更新]

我正在寻找一种非常轻量级的解决方案,它可以满足我的需求(例如,没有 Puppet 或 Cfengine)。我考虑.config在我的文件夹中创建一个文件夹/home/whatever/,使用 git 存储库保存我所有重要的配置文件。然后,一个非常简单的脚本将从我的文件夹中创建所需的符号链接/etc/~/…依此类推。还有其他建议吗?

答案1

可以说,您正在尝试使用修订控制系统来进行配置管理。这是两种截然不同的活动。我认为您采用的方法根本无法很好地扩展,并且会导致大量的挫败感。您最好找到一个配置管理解决方案(目前有很多成熟的选择:cfengine、puppet、chef 等),然后让您的配置管理解决方案从修订控制系统中提取其配方和/或配置文件。它将为您提供您似乎正在寻找的相同净效果,但将使用正确的工具来处理问题的适当部分。

答案2

您可以尝试 ansible。它不需要不同的服务器。您甚至可以在一个或多个系统上拥有主存储库,并从每个系统运行 ansible。并且您可以使配置目录中的所有文件保持同步,即使内容必须不同(例如 /etc/hostname、/etc/mailname,...)

如果您确实想使用 git:我不明白为什么您要将 / 作为 git 的基本路径。为什么不启动多个 git 存储库。

  • 其中一个是您的 $HOME 。因此您的用户名是什么并不重要。也许您可以使用 ~/.config 目录来符号链接 ~/ 中实际需要的文件。然后您甚至不必在此存储库上使用 .gitignore。

  • 下一个将专门用于/etc。

相关内容