etckeeper und git push - mit branches
Auf den ersten Blick mag es vielleicht schräg erscheinen, /etc zu versionieren und die Konfigurationen in git abzulegen. Aber beim zweiten Blick macht es total Sinn, da man so die Änderungen am Besten verfolgen kann - und im schlimmsten Fall sogar schnell auf eine alte Version eines Files zugreifen kann. Das Einzige das ich nicht machen würde, wäre dieses Repository dann auf Github zu stellen - aber wenn man einen eigenen Git-Server im Haus hat, kann man durchaus dort einen zentralen Speicher haben.
Um etckeeper zu initialisieren, gehen wir als root oder via sudo wie folgt vor:
etckeeper init
Etckeeper ist nun eigentlich bereit für unsere Schandtaten. Nur stört mich persönlich das Vorhandensein von shadow und shadow-. Also entfernen wir diese Dateien mit
git rm -r --cached shadow*
und gönnen ihnen einen Eintrag in der .gitignore. Der erste Commit wäre somit bereit:
git commit -a -m 'initial /etc commit'
In Zukunft werden wir jedoch
etckeeper commit
verwenden, damit die Sache auch rund läuft.
Wie der Titel verspricht, geht es nun um das branchen. Wir machen einen Branch mit dem Namen des Hosts und hängen diesen an unser bestehendes oder gerade angelegtes Repository am zentralen Git:
git branch -m master $HOSTNAME git remote add origin git@git.myserver.com:path/to/repo.git git push --set-upstream origin $HOSTNAME
Das war’s dann auch schon. Praktisch nun, wenn man zwei Konfigurationsdateien vergleichen will, nutzt man:
git diff origin/server1 origin/server2 -- file
Sauber, oder? Jeder der mich kennt wird wissen, dass ich solche Dinge dann auch noch gerne automatisiere um dem Vergessen vorzubeugen. Dies geht am Besten in einem Hook für etckeeper in /etc/etckeeper/commit.d/60-push mit folgendem Inhalt:
#!/bin/sh git push --set-upstream origin $HOSTNAME
Ausführbar machen und ab die Post.
Kommentare
Kommentare werden geladen…