Etc-Verzeichnis mit etckeeper versionieren
Die Versionierung von Konfigurationsverzeichnissen empfiehlt sich aus Dokumentations- und Backup-Sicht. Zum einen werden alle Änderungen an Konfigurationsdateien mitprotokolliert und versioniert, zum anderen können frühere Versionen im Fehlerfall wieder hergestellt werden. Ganz ohne Vorsicht sind diese Features nicht zu genießen, da sich schützenswerte Informationen im etc-Verzeichnis befinden. Auf Verschlüsselung und restriktive Dateirechte bei der Übertragung bzw. Sicherung des Repos, welches etc verwaltet, ist daher zu achten.
Etckeeper installieren
Der Source-Code von etckeeper kann vom Git-Repository unter [1] bezogen werden. Unter Ubuntu empfiehlt sich die Installation aus den Repositories:
:~$ sudo apt-get install etckeeper
Etckeeper konfigurieren
Etckeeper unterstützt verschiedene Repository-Arten: git, mercurial, bazaar, or darcs. Im folgenden Beispiel wird ein Git-Repository verwendet:
:~$ sudo apt-get install git
Anschließend wird in der etckeeper-Konfiguration Git eingetragen:
:~$ sudo vi /etc/etckeeper/etckeeper.conf # The VCS to use. #VCS="hg" VCS="git" #VCS="bzr" #VCS="darcs" [...]
Weitere wichtige Optionen sind AVOID_DAILY_AUTOCOMMITS und AVOID_COMMIT_BEFORE_INSTALL. Diese sind beide per Default deaktiviert. Wer sich mit etckeeper näher beschäftigt und für alle Änderungen sinnvolle Commits erstellen möchte, sollte diese aktivieren.
AVOID_DAILY_AUTOCOMMITS=1 AVOID_COMMIT_BEFORE_INSTALL=1
Daraufhin kann das Repository initialisiert werden:
:~$ cd /etc/ :/etc$ sudo etckeeper init Initialized empty Git repository in /etc/.git/
Beim ersten commit werden alle vorhandenen Dateien in etc zum Repo hinzugefügt und von nun an versioniert:
:/etc$ sudo etckeeper commit "Initial etc commit"
Etckeeper verwenden
Wir nun eine Datei editiert, werden mittels Git die Änderungen protokolliert:
:/etc$ sudo vi /etc/phpmyadmin/apache.conf :/etc$ sudo git status # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: phpmyadmin/apache.conf # no changes added to commit (use "git add" and/or "git commit -a")
Die Änderung kann anschließend wieder verworfen oder ins Repo gespielt werden:
:/etc# git commit -a -m "Changed phpmyadmin apache.conf"
[master d589a0a] Changed phpmyadmin apache.conf
[...]
:/etc# git log
commit d589a0a6dfecbb19a5e24be0d6f3a02d2e915d28
Author: root <root@icinga.(none)>
Date: Thu Nov 8 15:21:53 2012 +0100
Changed phpmyadmin apache.conf
[...]
