Um Änderungen in Konfigurationsdateien nachhaltig zu dokumentieren und nachvollziehbar zu machen, eignet sich die Nutzung einer VCS-Lösung. In der Regel kommt dabei git zum Einsatz.
Die Anwendung etckeeper vereinfacht die Einrichtung und erlaubt eine Automatisierung. Die Installation erfolgt mithilfe des Paketmanagers der Distribution.
Red Hat/Fedora
dnf install etckeeper
Debian/Ubuntu
apt install etckeeper
Zur Einrichtung werden Root-Rechte benötigt. Dazu kann die Konfigurationsdatei /etc/etckeeper/etckeeper.conf auf die eigenen Bedürfnisse hin angepasst werden, wobei in der Regel die Standardkonfiguration der Distribution einen guten Ausgangspunkt darstellt.
Soll das Verzeichnis /etc in Zukunft versioniert werden, muss dieses einmalig initialisiert werden:
etckeeper init /etc
Dabei ist eine Nutzung nicht auf das /etc Verzeichnis beschränkt. Es können beliebige weitere Verzeichnisse mit Konfigurationsdateien hinzugefügt werden. Zu beachten ist allerdings, dass Git standardmässig nicht auf eine Versionierung von grösseren Binärdateien ausgelegt ist.
Nach der Definition der zu versionierenden Verzeichnisse, kann der initiale Commit erfolgen:
etckeeper commit "inital commit"
Nun kann testweise eine Änderung im /etc Verzeichnis durchgeführt werden.
Im folgenden Beispiel wird die Meldung angepasst, welche in einer tty vor dem Anmelden angezeigt wird:
vi /etc/issue.d/zzz-1000V.issue
1000V - Nicht anfassen!
Testen kann man die Änderung wie folgt:
agetty --show-issue
Mit folgendem Befehl kann man prüfen, welche Änderungen bei einem Commit durchgeführt werden:
etckeeper vcs status
Nun kann die neue Datei hinzugefügt werden:
etckeeper commit -m "added new issue"
Alle bisherigen Commits können wie folgt angezeigt werden:
etckeeper vcs log
Um den aktuellen Stand mit einem vorausgegangenen Commit zu vergleichen, kann die in der Log-Ausgabe angegebene Commit-ID genutzt werden. Dabei reicht in der Regel die Angabe der ersten 6-8 Stellen der Commit-ID (bis diese eindeutig ist).
etckeeper vcs diff MEINE_COMMIT_ID
Eine frühere Version einer Konfigurationsdatei lässt sich so auch auf einfache Weise wiederherstellen:
etckeeper vcs checkout MEINE_COMMIT_ID /etc/MEINE_CONFIG
Auch ein vollständiger Wechsel auf einen früheren Stand ist so möglich:
etckeeper vcs checkout MEINE_COMMIT_ID
Möchte man Änderungen in den zu versionierenden Verzeichnissen automatisch committen kann der mitgelieferte systemd Timer genutzt werden:
systemctl enable etckeeper.timer
Dabei werden Änderungen standardmässig täglich zum lokalen Git-Repository hinzugefügt.
etckeeper unterstützt darüber hinaus auch das Pushen von Änderungen an ein Remote. Zu beachten ist dabei allerdings, dass sensitive Daten nicht in ein öffentliches Git-Repository gelangen sollten.
Quelle: https://etckeeper.branchable.com/
Weiterführende Informationen: https://wiki.archlinux.org/title/etckeeper