Etckeeper
Du bist hier : | {{#youAreHere:Etckeeper}} |
etckeeper verwaltet die Konfigurationsdateien in /etc mittels einem Versionskontrollsystem (z.B. git). Es integriert sich dabei auch in apt, um damit die Änderungen bei jeder Paketinstallation mitzuprotokollieren.
Installation
apt-get install etckeeper
Standardmässig wird git als VCS verwendet, das ist gut so. Danach sollte man sofort noch ein paar Variablen setzen :
sudo git config --global user.name "Your Name" sudo git config --global user.email you@example.com
Dies muss als root geschehen, denn etckeeper läuft mit dessen ID. Es ist daher nicht möglich, etckeeper und den eigentlichen root-Benutzer bei den git-Commits von einander zu trennen.
Das komplette /etc Verzeichnis ist nun unter git-Kontrolle. Man kann Dateien und Verzeichnisse wie gewohnt mittels der Datei .gitignore ausnehmen.
Konfiguration
In der /etc/etckeeper/etckeeper.conf :
- AVOID_COMMIT_BEFORE_INSTALL=1 -> eine Installation per apt wird abgebrochen, falls uncommited Änderungen in /etc vorliegen. Das zwingt zu einem recht sauberen Arbeitsstil !
Gebrauch
Mit apt/aptitude erfolgt alles automatisch - es wird ein neuer Commit per apt-Lauf erzeugt
Wenn man selber Dateien in /etc editiert, kann man sie, wie bei git üblich, mittels git add / git commit einchecken. etckeeper benutzt keine getrennte Datenhaltung, es wird alles über git verfolgt, etckeeper ist lediglich ein Frontend dafür.
Wer mit git nicht zurechtkommt, kann aber auch etckeeper commit <Kommentar> aufrufen. Das bündelt alle Änderungen zu einem commit zusammen. Allerdings muss die Betonung auf alle liegen ! Es ist nicht möglich unterschiedliche Änderungen in getrennte commits zu teilen. Daher muss man entweder die Änderungen nacheinander machen (sauberer Arbitsstil, eine Sache nach der anderen...), oder aber man muss git-Befehle verwenden.
Externes git Repository
wird als "remote" eingerichtet (URL anpassen) :
cd /etc git remote add origin git@github.com:mein.git git push origin master
Das git push origin master dient 2 Zwecken :
- den SSH Schlüssel des Remote Host zu bestätigen - macht nur im interaktiven Modus Sinn
- den default Branch (master) zu setzen - damit reicht dann ein git push origin um die Daten zum Remote zu pushen
Damit beim Commit die Daten weitergereicht werden, legt man noch die Datei /etc/etckeeper/commit.d/99git-push an (nicht vergessen, sie ausführbar zu machen !):
#!/bin/sh git push origin
Wichtig : das Repository sollte nicht öffentlich erreichbar sein, denn es sind alle Dateien von /etc dort sichtbar, also auch die /etc/shadow (Passwörter), die Konfigurationsdateien von Email/Webserver/MysqlDB/Firewall/...