Git

如何通過 git 在中央伺服器上儲存 etckeeper 儲存庫

  • March 11, 2016

我想為我所有伺服器的 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 送出“測試推送”。

引用自:https://serverfault.com/questions/144427