Git
如何通過 git 在中央伺服器上儲存 etckeeper 儲存庫
我想為我所有伺服器的 etckeeper .git 儲存庫提供一個中央 git 儲存庫。這裡的建議是使用 /etc/etckeeper/commit.d 中的文件,它基本上看起來像這樣,假設已經在 somehost 上的 somedir 中設置了一個 git repo:
#!/bin/sh cd /etc git push faruser@farhost:somedir
這樣做的問題是,將所有伺服器都放在中央伺服器上的同一個倉庫中會非常好。我試過了
git push faruser@farhost:somedir/server1
但那失敗了。
如您所見,我以前從未使用過 git … 非常感謝您對如何實現這一點的任何想法 :)
乾杯,
安德魯
我可以理解想要一個包含所有配置資訊的中心位置,但你可能希望它們仍然是他們自己的獨立儲存庫,只是在一個中心位置。為此,請查找如何在 git 中推送到遠端位置(使用git push)。然後,您需要設置從所有伺服器對該位置的訪問,此時您可以從所有伺服器推送。在這一點上,您指出的建議應該有效。
除了 pjz 的好答案之外,這裡是如何一步一步完成的:
在客戶端上創建文件 /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 送出“測試推送”。