Ich hätte gerne ein zentrales Git-Repository für alle etckeeper .git-Repos meiner Server. Hier wurde vorgeschlagen, eine Datei in /etc/etckeeper/commit.d zu verwenden, die im Grunde so aussieht, vorausgesetzt, dass ein Git-Repo in Somedir auf Somehost eingerichtet wurde:
#!/bin/sh
cd /etc
git push faruser@farhost:somedir
Das Problem dabei ist, dass es wirklich schön wäre, alle Server im selben Repo auf dem zentralen Server zu haben. Ich habe es versucht
git push faruser@farhost:somedir/server1
aber das ist gescheitert.
Wie Sie sehen, habe ich noch nie mit Git gearbeitet ... Ideen, wie dies erreicht werden kann, werden sehr geschätzt :)
Prost,
Andreas
Zusätzlich zu der guten Antwort von pjz können Sie hier Schritt für Schritt Folgendes tun:
Erstellen Sie die Datei /etc/etckeeper/commit.d/60-push (vergessen Sie nicht, chmod + x it) auf den Clients.
central_server ist in der ssh-Konfiguration definiert, siehe unten. /var/git/client_name.git ist das Verzeichnis auf dem zentralen Server, das das Git-Repo enthält.
Die ~ / .ssh / config von root (!) Sollte ungefähr Folgendes enthalten:
Dann müssen Sie das Git-Repo auf dem central_server starten
Testen Sie es mit einer kleinen Bearbeitung in / etc und dann einem Etckeeper-Commit "Test Push'ing".
quelle
Sie müssen den Remote-Host so einrichten, dass der lokale Benutzer (ich nehme root an, wenn Sie etckeeper verwenden) auf das Remote-Repository pushen darf. Wie dies zu tun ist, hängt davon ab, wie Ihre Git-Repos auf der Remote-Site veröffentlicht / verfügbar sein sollen. Wenn Sie beispielsweise git über ssh verwenden, würden Sie höchstwahrscheinlich ein sshkey-Paar ohne Passphrase einrichten und dem lokalen Root erlauben, sich auf der Reomteside ohne (keyoard -, ...) Ineraktion anzumelden. Und ja, beim Pushing an den Remote-Standort muss das Repository vorhanden sein, sodass mindestens ein leeres Repo vorhanden sein muss. Teilen Sie uns zunächst die genaue Situation mit, mit der Sie arbeiten, und den genauen Fehler, den Sie erhalten.
quelle
Ich denke, dass die erste Frage ist, wie man zu verschiedenen Zweigen im selben Repo pusht. Eine Möglichkeit, dies zu archivieren, besteht in der Verwendung der folgenden Syntax:
Dadurch wird der lokale 'Master'-Zweig in den Remote-Zweig' Server1 'verschoben. Sie können Variationen davon haben, wie zum Beispiel:
Mehrere Bemerkungen:
Da nicht alle Zweige einen gemeinsamen Vorfahren haben, benötigen Sie möglicherweise eine --force für das erste Commit
Aus dem gleichen Grund sehen Sie im Remote-Repo einen linearen unabhängigen Verlauf. Insbesondere werden Sie den gemeinsamen Teil Ihrer verschiedenen Niederlassungen nicht leicht erkennen können. Idee für ein Projekt: Nehmen Sie mehrere Git-Zweige, erstellen Sie neue, um gemeinsame Aktualisierungen gemeinsam zu nutzen, und stellen Sie sicher, dass der Status in den anfänglichen Commits auch in neu geschriebenen Commits vorhanden ist (dh schreiben Sie den Verlauf neu, indem Sie Commit / Merge / ... hinzufügen Status der anfänglichen Commits)
quelle
Zumindest auf Debian gibt es eine Option in etckeeper.conf.
Nach dem manuellen Hinzufügen von Remote zu Git-Repos sollte es sofort funktionieren
quelle
/etc
in einem Remote-Repo funktionieren - erklärt jedoch nicht, wie dieses Remote-Repo mit mehreren Computern umgehen könnte (wie in den anderen Antworten erläutert, entweder über separate Repos oder über Zweige).