Website-Suche

So verwalten Sie /etc mit Versionskontrolle mit Etckeeper unter Linux


In der Unix/Linux-Verzeichnisstruktur befindet sich das Verzeichnis /etc, in dem sich hostspezifische, systemweite Konfigurationsdateien und Verzeichnisse befinden. Es ist ein zentraler Speicherort für alle systemweiten Konfigurationsdateien. Eine Konfigurationsdatei ist eine lokale Datei, die zur Steuerung der Funktionsweise eines Programms verwendet wird – sie muss statisch sein und darf keine ausführbare Binärdatei sein.

Um den Überblick über Änderungen an Systemkonfigurationsdateien zu behalten, erstellen Systemadministratoren normalerweise Kopien (oder Sicherungen) von Konfigurationsdateien, bevor sie diese ändern. Wenn sie die Originaldatei direkt geändert und einen Fehler gemacht haben, können sie auf diese Weise zur gespeicherten Kopie zurückkehren.

Etckeeper ist eine einfache, benutzerfreundliche, modulare und konfigurierbare Sammlung von Tools, mit denen /etc mithilfe der Versionskontrolle verwaltet werden kann. Es ermöglicht Ihnen, Änderungen im Verzeichnis /etc in einem Versionskontrollsystem (VCS) wie Git (das bevorzugte VCS), Mercurial, Bazaar oder Darcs-Repository zu speichern . Dadurch können Sie Git verwenden, um Änderungen, die an /etc vorgenommen wurden, zu überprüfen oder im Falle eines Fehlers rückgängig zu machen.

Seine weiteren Funktionen sind:

  1. Es unterstützt die Integration mit Front-End-Paketmanagern wie APT, YUM, DNF, Zypper und pacman-g2, um bei Paket-Upgrades vorgenommene Änderungen an /etc automatisch zu übernehmen.
  2. Es verfolgt Dateimetadaten (wie die Dateiberechtigungen), die Git normalerweise nicht unterstützt, die aber für /etc wichtig sind, und
  3. Es umfasst sowohl einen Cron-Job als auch einen systemd-Timer, die jeweils einmal pro Tag automatisch bestehende Änderungen an /etc festschreiben können.

So installieren Sie Etckeeper unter Linux

Etckeeper ist in Debian, Ubuntu, Fedora und anderen Linux-Distributionen verfügbar. Um es zu installieren, verwenden Sie Ihren Standard-Paketmanager wie gezeigt. Beachten Sie, dass dieser Befehl auch git und einige andere Pakete als Abhängigkeiten installiert.

sudo apt-get install etckeeper	#Ubuntu and Debian
apt-get install etckeeper		#Debian as root user
dnf install etckeeper			#Fedora 22+
sudo zypper install etckeeper	        #OpenSUSE 15

Auf Enterprise Linux-Distributionen wie RedHat Enterprise Linux (RHEL), CentOS und anderen müssen Sie das hinzufügen EPEL-Repository, bevor Sie es wie gezeigt installieren.

yum install epel-release
yum install etckeeper

Konfigurieren von Etckeeper unter Linux

Nachdem Sie etckeeper wie oben gezeigt installiert haben, müssen Sie seine Funktionsweise konfigurieren. Die Hauptkonfigurationsdatei lautet /etc/etckeeper/etckeeper.conf. Um es zur Bearbeitung zu öffnen, verwenden Sie wie gezeigt einen Ihrer bevorzugten textbasierten Editoren.

vim /etc/etckeeper/etckeeper.conf
OR
sudo nano /etc/etckeeper/etckeeper.conf

Die Datei enthält mehrere Konfigurationsoptionen (jede mit einer kurzen, klaren Nutzungsbeschreibung), mit denen Sie das zu verwendende Versionskontrollsystem (VCS) festlegen und Optionen an VSC übergeben können. zum Aktivieren oder Deaktivieren des Timers, zum Aktivieren oder Deaktivieren spezieller Dateiwarnungen, zum Aktivieren oder Deaktivieren von etckeeper, um vorhandene Änderungen vor der Installation an /etc zu übertragen.

Außerdem können Sie den Front-End- oder Paketmanager auf höherer Ebene (wie apt, yum, dnf usw.) und den zugrunde liegenden Paketmanager oder Paketmanager auf niedriger Ebene (dpkg, rpm usw.) so einstellen, dass sie mit etckeeper arbeiten. .

Wenn Sie Änderungen an der Datei vorgenommen haben, speichern Sie diese und schließen Sie die Datei.

Initialisieren des Git-Repositorys und Durchführen des ersten Commits

Nachdem Sie etckeeper konfiguriert haben, müssen Sie das Git-Repository initialisieren, um mit der Verfolgung aller Änderungen in Ihrem /etc-Verzeichnis wie folgt zu beginnen. Sie können etckeeper nur mit Root-Berechtigungen ausführen, andernfalls verwenden Sie sudo.

cd 
sudo etckeeper init

Damit etckeeper automatisch arbeiten kann, müssen Sie als Nächstes den ersten Commit ausführen, um die Änderungen in /etc wie folgt zu verfolgen.

sudo etckeeper commit "first commit"

Änderungen vornehmen und sich verpflichten

Nachdem Sie Ihren ersten Commit ausgeführt haben, verfolgt etckeeper über git nun alle Änderungen im Verzeichnis /etc. Versuchen Sie nun, Änderungen an einer der Konfigurationsdateien vorzunehmen.

Führen Sie dann den folgenden Befehl aus, um Dateien anzuzeigen, die seit dem letzten Commit geändert wurden. Dieser Befehl zeigt im Wesentlichen die Änderungen in /etc an, die nicht für die Festschreibung bereitgestellt wurden, wobei VCS für git steht und „status“ ein Git-Unterbefehl ist.

sudo etckeeper vcs status

Anschließend übernehmen Sie die letzten Änderungen wie folgt.

sudo etckeeper commit "changed hosts and phpmyadmin config files"

Commit-Protokolle anzeigen

Um ein Protokoll aller Commits (ID und Kommentar jedes Commits) anzuzeigen, können Sie den folgenden Befehl ausführen.

sudo etckeeper vcs log

Sie können auch die Details eines Commits anzeigen. Geben Sie einfach die Commit-ID an (die ersten paar Zeichen reichen aus), wie gezeigt:

sudo etckeeper vcs show a153b68479d0c440cc42c228cbbb6984095f322d
OR
sudo etckeeper vcs show a153b6847

Außerdem können Sie den Unterschied zwischen zwei Commits wie gezeigt anzeigen. Dies ist besonders nützlich, wenn Sie Änderungen rückgängig machen möchten, wie im nächsten Abschnitt gezeigt. Mit den Pfeiltasten können Sie nach oben und unten oder nach links und rechts scrollen und den Vorgang durch Drücken von q beenden.

sudo etckeeper vcs show 704cc56 a153b6847

So widerrufen Sie Änderungen

Die Essenz von etckeeper besteht darin, Ihnen dabei zu helfen, Änderungen an Ihrem /etc-Verzeichnis zu verfolgen und die Änderungen bei Bedarf rückgängig zu machen. Angenommen, Sie stellen fest, dass Sie bei der letzten Bearbeitung in /etc/nginx/nginx.conf einige Fehler gemacht haben und der Nginx-Dienst aufgrund von Fehlern in der Konfigurationsstruktur nicht neu gestartet werden kann, können Sie dies wiederherstellen auf die gespeicherte Kopie in einem bestimmten Commit (z. B. 704cc56), wo Sie denken, dass die Konfiguration wie folgt korrekt war.

sudo etckeeper vcs checkout 704cc56 /etc/nginx/nginx.conf

Alternativ können Sie alle Änderungen abbrechen und zu den Versionen aller Dateien unter /etc (und seinen Unterverzeichnissen) zurückkehren, die in einem bestimmten Commit gespeichert sind.

sudo etckeeper vcs checkout 704cc56 

So aktivieren Sie die automatische Übernahme von Änderungen

Etckeeper wird außerdem mit einem Service und Timer-Einheiten für Systemd ausgeliefert, die im Paket enthalten sind. Um „Autocommit“ von Änderungen im Verzeichnis /etc zu starten, starten Sie zunächst einfach die Unit etckeeper.timer und prüfen Sie, ob sie betriebsbereit ist , wie folgt.

sudo systemctl start etckeeper.timer
sudo systemctl status etckeeper.timer

Und aktivieren Sie den automatischen Start beim Systemstart, wie gezeigt.

sudo systemctl enable etckeeper.timer

Weitere Informationen finden Sie auf der Etckeeper-Projektseite: https://etckeeper.branchable.com/.

Abschluss

In dieser Anleitung haben wir gezeigt, wie Sie etckeeper installieren und verwenden, um Änderungen im Verzeichnis /etc in einem Versionskontrollsystem (VCS) zu speichern. B. git, und überprüfen oder machen Sie Änderungen, die an /etc vorgenommen wurden, ggf. rückgängig. Teilen Sie Ihre Gedanken mit oder stellen Sie Fragen zu etckeeper über das Feedback-Formular unten.