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.

Author:

5 thoughts on “etckeeper und git push – mit branches”

  • dreamworks says:

    Danke Dir; kam von SVN und probier gerade etwas mit git rum… Denke ich hab’s langsam geschnallt auch wenn ich noch nicht ganz mit der Idee klarkomme, aus EINEM Repo viele viele kleine zu machen…

    branches mit etckeeper war auch mein Gedanke, fühlte mich aber etwas alleine – bis ich deinen Artikel gefunden habe… Hier sind ca. 10 Hosts am Start.. Mal gucken, wie sich das bewährt..
    Meine Tech-Geek-Jungs meinen ja, ich soll ansible benutzen, aber nunja :)

  • Keine Ursache. Ich hatte ähnliche Probleme. Durch Git kann ich die Branches auch noch besser vergleichen und so Config-Unterschiede besser sehen, wenn es mal drauf ankommt.

  • @deno Use etckeeper instead of regular git because etckeeper tracks file permissions more accurately and supports empty directories, which plain git does not.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.