是否可以将 etckeeper 与单个共享 git 存储库一起使用?

是否可以将 etckeeper 与单个共享 git 存储库一起使用?

我注意到有几个人建议使用etckeeper将版本控制应用于我的 /etc 目录。

在我看来,默认安装会将存储库放在您尝试管理的 /etc 所在的同一台机器上。这对于版本控制来说很好,但并没有带来制作文件服务器外备份的额外好处 - 或者允许我将 /etc 的部分内容从一台源机器复制到另一台源机器。

是否有可能共享一个 git 存储库在中央管理机器上,以便每个服务器上的 etckeeper 将其数据存储在同一个位置?

(我现在用 svn 和一些自定义脚本做类似的事情来提交和恢复文件,但我必须记住在进行更改时提交它们。)

答案1

首先,使用安装 etckeeper,在 /etc/etckeeper/etckeeper.conf 中为 git 配置。按照 etckeeper 的安装方法安装您的发行版或从源代码安装。

很快,你就会有一个 /etc/.git

现在在您的服务器上,确保您有一个(安全的)repo 可以推送到...

 # ssh faruser@farhost     
 # mkdir somedir && cd somedir && git init && chmod 700 .git
 # exit

现在在初始主机上,通过 ssh 将本地 repo 推送到服务器:

# cd /etc && git push faruser@farhost:somedir

在这种情况下,Somedir 当然可以是相对的(遵循 ssh 约定)

每当您做出影响 /etc 的更改(并被 etckeeper 拦截到 /etc/.git 中)时,请执行此操作,这样您的机器就会同时拥有本地和离机存储库。

或者设置无密码 ssh 并在 /etc/etckeeper/commit.d/ 中创建一个钩子,这样如果机器始终处于连接状态,它就会自动发生。

答案2

可以添加远程分支配置,将每个服务器的 etckeeper 存储库的主分支映射到远程存储库上的分支。为此,您可以在每台服务器上运行以下命令:

cd /etc
git branch -m master $HOSTNAME
git remote add origin [email protected]:path/to/single/repo.git
git push -u origin master:$HOSTNAME

完成此设置后,后续git push将把每个服务器主分支的更改发送到中央存储库上的专用服务器分支。

尽管分支没有共同的起点,但可以通过运行以下命令轻松比较来自两个不同分支(代表两个不同的服务器)的同一个文件:

git diff origin/server1 origin/server2 -- file

这可以与以下建议的自动设置相结合乔乔

答案3

如何自动完成,完整内容:

在客户端上创建文件 /etc/etckeeper/commit.d/60-push(不要忘记 chmod+x 它)。

#!/bin/sh
git push central_server:/var/git/client_name.git master

central_server 在 ssh 配置中定义,见下文。/var/git/client_name.git 是中央服务器上的目录,包含 git repo。

来自 root(!) 的 ~/.ssh/config 应该包含如下内容:

host central_server
Hostname 192.168.0.1
User etckeeper #a user on the central server 
IdentityFile ~/.ssh/custom_key # key is in authorized_keys in
             #etcpeeper@central_server:~/.ssh/authorized_keys

然后你需要在 central_server 上初始化 git repo

mkdir /var/git/client_name.git
su etckeeper
cd /var/git/client_name.git
git --bare init

通过在 /etc 中进行小幅编辑来测试它,然后使用 etckeeper 提交“test push'ing”。

答案4

您确实不想将 etckeeper 作为您的备份策略。虽然拥有一份配置文件的副本会很好,但这还不足以成为灾难恢复计划。

专注于对系统进行真正的备份。最简单的方法可能是使用 cronjob 将 tarball 传送到磁带……哦,对了。现在没人使用磁带了。好的,使用 cronjob同步 全部您的文件到专用 NAS。如需更强大的备份解决方案,请查看阿曼达巴库拉

就学术而言,我能够我的 etckeeper repo 最多github就像任何其他 git repo 一样。

相关内容