Answers:
首先,使用在/etc/etckeeper/etckeeper.conf中为git配置的install etckeeper。按照您发行版或源代码中etckeeper的安装方法进行操作。
很快,您将拥有一个/etc/.git
现在,在您的服务器上,确保有一个(安全)存储库可以推送到...
# ssh faruser@farhost
# mkdir somedir cd somedir && git init && chmod 700 .git
# exit
现在在初始主机上,通过ssh将本地存储库推送到服务器:
# cd /etc && git push faruser@farhost:somedir
在这种情况下,somedir当然可以是相对的(遵循ssh约定)
只要您进行会影响/ etc的更改(并被etckeeper隔离到/etc/.git中),就可以执行此操作,并且您将拥有计算机的本地和非本地存储库。
或设置无密码的ssh并在/etc/etckeeper/commit.d/中建立一个钩子,以便在机器始终处于连接状态时自动发生。
git push
用于创建的git repo吗?可能您需要在somedir中创建裸仓库,这是commit.d下的钩子,这真的是个好主意,我喜欢
可以添加远程分支配置,以将etckeeper存储库的主分支从每个服务器映射到远程存储库上的分支。为此,您可以在每台服务器上运行以下命令:
cd /etc
git branch -m master $HOSTNAME
git remote add origin git@git.example.com:path/to/single/repo.git
git push -u origin master:$HOSTNAME
完成此设置后,后续操作git push
会将更改从每个服务器主分支发送到中央存储库上的专用服务器分支。
尽管分支没有共同的起点,但这可以通过运行以下命令轻松地比较代表两个不同服务器的两个不同分支中的同一文件:
git diff origin/server1 origin/server2 -- file
这可以与jojoo建议的自动设置结合使用。
如何自动执行,全文:
在客户端上创建文件/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”。
那不是重点。如果要广泛分发配置,则除了每台计算机的本地存储库之外,还要设置另一个存储库,并根据需要从中挑选每台计算机。这样做是允许每台机器偏离(分支,实际上)并保留修订控制。
您真的不想让etckeeper成为您的备份策略。虽然拥有配置文件的副本会很不错,但这还不足以成为灾难恢复计划。
专注于拥有系统的真实备份。这位简易师可能是一个把压缩包送进录音带的骗子……哦,对。没有人使用磁带了。好吧,一个cronjob到rsync的 所有文件到一个专用的NAS。有关更强大的备份解决方案,请查看Amanda和Bacula。