So verwalten Sie / etc mit der Versionskontrolle mit Etckeeper unter CentOS 7

Einführung

Im Linux-Ökosystem ist die regelmäßige Installation, Wartung und Aktualisierung von Software ein Muss. Das Nachverfolgen von Änderungen an lokalen Konfigurationsdateien ist jedoch weiterhin erforderlich. Im Gegensatz zum alten Standby, vor dem Vornehmen von Änderungen Kopien von Konfigurationsdateien zu erstellen, können Sie mit etckeeper Änderungen mithilfe eines Git-, Mercurial-, Bazaar- oder Darcs-Repositorys verfolgen, genau wie bei einem Softwareentwicklungsprojekt.

Außerdem fügt sich etckeeper nahtlos in yum ein, um automatisch Änderungen am Inhalt des Verzeichnisses "+ / etc +" festzuschreiben, wenn Pakete aktualisiert werden. Auf diese Weise können Sie auf frühere Versionen Ihrer Konfigurationsdateien zurückgreifen, falls Sie dies möchten oder müssen.

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie:

etckeeper protokolliert nur Dateiberechtigungen, Metadaten und Änderungen. Es werden keine sofort einsatzbereiten Tools zum Wiederherstellen von Dateien bereitgestellt. Daher ist ein Verständnis der Grundlagen eines Revisionskontrollsystems erforderlich.

In diesem Artikel werden wir Git verwenden, das ist das Standard-VCS, das etckeeper verwendet. Wenn Sie Ihr Gedächtnis über Git und Versionskontrolle auffrischen möchten, können Sie unter this tutorial series nachsehen. Obwohl Sie Git in diesem Handbuch nicht direkt verwenden, können Sie Git-spezifische Befehle über etckeeper ausführen.

Schritt 1 - etckeeper installieren

In diesem Schritt installieren wir etckeeper.

Zunächst müssen Sie EPEL (Extra Packages for Enterprise Linux) auf Ihrem CentOS 7-Server aktivieren, da dies das Repository ist, das etckeeper enthält.

sudo yum update && sudo yum install epel-release

Dann installiere etckeeper.

sudo yum update && sudo yum install etckeeper

Git wird standardmäßig mit CentOS 7 geliefert, sodass wir es nicht installieren müssen.

Schritt 2 - Anpassen der Konfiguration von etckeeper

Nachdem Sie etckeeper installiert haben, aktualisieren Sie im nächsten Schritt die Konfigurationsdatei + / etc / etckeeper / etckeeper.conf +.

Öffnen Sie zunächst die Konfigurationsdatei mit Nano oder Ihrem bevorzugten Texteditor.

sudo nano /etc/etckeeper/etckeeper.conf

Im Folgenden sind die wesentlichen Variablen aufgeführt, die Sie konfigurieren müssen, damit etckeeper ordnungsgemäß funktioniert. Fühlen Sie sich frei, die restlichen Einstellungen auskommentiert zu lassen.

Stellen Sie zunächst unter dem Kommentar "+ # Das zu verwendende VCS. " Sicher, dass " VCS =" git "" nicht kommentiert ist (d. H. am Zeilenanfang steht kein " # +"). Standardmäßig ist diese Option bereits nicht kommentiert, da git das Standard-VCS ist, das von etckeeper-Installationen unter CentOS 7 verwendet wird.

Wenn Sie verhindern möchten, dass etckeeper Änderungen einmal pro Tag automatisch festschreibt, stellen Sie sicher, dass die Angabe + AVOID_DAILY_AUTOCOMMITS = 1 + nicht kommentiert ist. Um zu entscheiden, ob Sie dies festlegen möchten, sollten Sie prüfen, ob Ihre Systemkonfigurationsdateien häufigen Änderungen unterliegen (z. Testumgebungen ändern sich häufig täglich). In diesem Fall sollten Sie diese Zeile auskommentieren. ansonsten kannst du es kommentieren lassen.

Wenn Sie möchten, dass die Installation abgebrochen wird, wenn nicht festgeschriebene Änderungen in "+ / etc " vorgenommen werden, müssen Sie " AVOID_COMMIT_BEFORE_INSTALL = 1 +" auskommentieren. Dies erfordert ein manuelles Festschreiben, bevor Sie yum zum Installieren von Paketen verwenden. Andernfalls lassen Sie es auskommentiert und yum schreibt die aktualisierten Dateien automatisch fest, bevor Sie eine Installation ausführen. Diese Wahl liegt ganz bei Ihnen; Dies hängt in hohem Maße von Ihrer Umgebung und der Anzahl der Änderungen ab. Dies ist dem vorherigen Beispiel sehr ähnlich, außer dass es diesmal von der Häufigkeit abhängt, mit der Sie Pakete installieren.

Wenn Sie die Optionen aktualisiert haben, speichern und schließen Sie die Datei.

Schritt 3 - Initialisieren des Git-Repository

In diesem Schritt initialisieren wir das Git-Repository in + / etc +.

Wechseln Sie zunächst in das Verzeichnis "+ / etc +".

cd /etc

Initialisieren Sie als Nächstes das Repository, indem Sie den folgenden Befehl ausführen.

sudo etckeeper init

Sie sollten die folgende Meldung erhalten:

Initialized empty Git repository in /etc/.git/

Sie sollten nun das Verzeichnis "+ .git" und die Datei "+ .gitignore" in "+ / etc" sehen. Wenn Sie beispielsweise den folgenden Befehl ausführen:

ls -la /etc | grep git

Sie sollten diese Zeilen in der Ausgabe sehen:

drwx------.  7 root     root       4096 Apr  2 21:42 .git
-rw-r--r--.  1 root     root        874 Apr  2 21:42 .gitignore
  • Hinweis *: + .git + muss im lokalen System geschützt sein (daher die Lese-, Schreib- und Ausführungsberechtigungen nur für den Superuser); Da Versionskontrollsysteme die Dateiberechtigungen nicht selbst überwachen, bietet etckeeper diese Funktion.

Das Verzeichnis + .git + enthält verschiedene Konfigurations- und Beschreibungsdateien sowie weitere Unterverzeichnisse, die für die Verwendung von Git selbst vorgesehen sind. Die + .gitignore + Datei, die explizit nicht verfolgte Dateien angibt, die git ignorieren soll, soll von etckeeper in seiner Gesamtheit verwaltet werden. Es ist nicht ratsam, es mit einer Ausnahme manuell zu bearbeiten.

Wenn bestimmte Dateien nicht mithilfe der Versionskontrolle erfasst werden sollen, können Sie sie manuell zur .gitignore-Datei hinzufügen. Um das Verfolgen einer Datei zu beenden, öffnen Sie zuerst "+ .gitignore +" zum Bearbeiten.

sudo nano .gitignore

In der letzten Zeile der Datei wird der von etckeeper verwaltete Endabschnitt "+" angezeigt. Fügen Sie die Dateinamen der Dateien, die Sie ignorieren möchten, in einer Zeile über dieser hinzu.

# end section managed by etckeeper

Speichern und schließen Sie dann die Datei.

Sie müssen außerdem die Dateien aus dem Cache entfernen, die derzeit von git verwaltet werden, da Sie das lokale Repository zuvor initialisiert haben.

etckeeper vcs rm --cached

Wiederholen Sie den obigen Befehl für so viele Dateien, wie Sie zuvor zu + .gitignore + hinzugefügt haben.

Schritt 4 - Übertragen von + / etc + in das Git-Repository

In diesem Schritt übergeben wir unser initiales "+ / etc +".

Das Hinzufügen Ihres ersten Commits ist einfach. Geben Sie einfach den folgenden Befehl ein. Obwohl dies nicht unbedingt erforderlich ist, sollten Sie jedem Commit eine Beschreibung hinzufügen, um sie später leichter identifizieren zu können.

sudo etckeeper commit ""

Sie sollten dann die ausgegebene Liste der Dateien sehen, die an Ihr Repository übergeben werden, wie im Folgenden (abgeschnitten):

create mode 100644 selinux/targeted/modules/active/modules/dnsmasq.pp
create mode 100644 selinux/targeted/modules/active/modules/dnssec.pp
create mode 100644 selinux/targeted/modules/active/modules/docker.pp
create mode 100644 selinux/targeted/modules/active/modules/dovecot.pp

Schritt 5 - Änderungen vornehmen

In diesem Schritt werden wir einige Änderungen an einer Datei in + / etc + vornehmen und diese festschreiben. Im nächsten Schritt werden wir diese Änderungen rückgängig machen.

Nehmen Sie zunächst eine Änderung am Inhalt einer Datei Ihrer Wahl vor. Beispielsweise können Sie Ihrer lokalen Namensauflösung einen neuen Host hinzufügen, indem Sie am Ende von "+ / etc / hosts +" eine Zeile einfügen, die aus einer IP-Adresse und dem zugehörigen Hostnamen besteht.

Öffnen Sie zuerst die Datei.

sudo nano /etc/hosts

Fügen Sie dann die folgende Zeile an dem Ende der Datei hinzu.

192.168.0.2    node01

Speichern und schließen Sie die Datei. Lassen Sie uns diese Änderung jetzt festschreiben.

sudo etckeeper commit ""

Ändern Sie abschließend die Berechtigungen der Datei.

sudo chmod 640 /etc/hosts

Und ändern Sie den Eigentümer (stellen Sie sicher, dass Sie * sammy * durch Ihren eigenen Benutzernamen ersetzen).

sudo chown : /etc/hosts

Sie können die aktuellen Berechtigungen und den Besitz von "+ / etc / hosts +" überprüfen.

ls -l /etc/hosts

Die Ausgabe sollte folgendermaßen aussehen:

-rw-r----- 1 sammy sammy 675 Apr 17 15:01 /etc/hosts

Schritt 6 - Änderungen rückgängig machen

Testen wir nun die Wiederherstellungsfunktionen von etckeeper - nicht nur die Datei und ihren Inhalt, sondern auch die Berechtigungen und den Besitz.

Listen Sie zunächst die bisherigen Commits auf.

sudo git log --pretty=oneline

Die erste Spalte der Ausgabe ist ein SHA-1-Hash, der das Commit eindeutig identifiziert. Die zweite ist die Beschreibung, die Sie verwendet haben, als Sie die Änderungen früher übermittelt haben.

Ihre Ausgabe sollte mit unterschiedlichen Hashes ähnlich aussehen.

d0958fbe4d947a6a3ad98141f9fe89d1fd1a95c4 Added a line to the hosts file
76c193da740a3e137fa000773a79de8bb5c898b7 First commit of my /etc directory

Notieren Sie sich den Hash jedes Commits. Sie werden sie verwenden, um zum vorherigen Status zurückzukehren.

Lassen Sie uns + / etc / hosts + so zurücksetzen, wie es ausgesehen hat, bevor wir mit diesem Tutorial begonnen haben. Ersetzen Sie die roten Zeichen durch den SHA-1-Hash, der Ihrem ersten Commit entspricht. Beachten Sie, dass Sie nicht die gesamte SHA-1-Hash-Zeichenfolge angeben müssen. Ein paar Zeichen, die es eindeutig identifizieren, reichen aus.

sudo etckeeper vcs checkout  /etc/hosts

Jetzt können wir den Inhalt, die Berechtigungen und den Besitz von "+ / etc / hosts +" überprüfen, um festzustellen, ob sie zurückgesetzt wurden.

Schauen Sie sich die letzten Zeilen der Datei an.

tail /etc/hosts

Sollte Ihnen eine Ausgabe wie diese geben, bei der die von uns hinzugefügte Zeile +192.168.0.2 node01 + wie erwartet fehlt.

...

# The following lines are desirable for IPv6 capable hosts
::1 test-etckeeper test-etckeeper
::1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6

Überprüfen Sie erneut die aktuellen Berechtigungen und den Besitz von "+ / etc / hosts +".

ls -l /etc/hosts

Sie sehen eine Ausgabe, die so aussieht.

-rw-r--r-- 1 root root 704 Apr 17 15:01 /etc/hosts

Der Inhalt der Datei wurde korrekt wiederhergestellt, ebenso die Berechtigungen und das Eigentum.

Fazit

In diesem Tutorial haben wir erklärt, wie Sie etckeeper verwenden, ein großartiges Tool, um Ihr + / etc + - Verzeichnis in einem Git-Repository zu speichern. Sie können auch ein Basar-, Mercurial- oder Darcs-Repository verwenden.

Unabhängig vom VCS Ihrer Wahl hilft Ihnen etckeeper dabei, den Überblick über Ihre Konfigurationsdateien zu behalten und sicherzustellen, dass Sie immer zu einem vorherigen Status zurückkehren können, wenn Sie Änderungen rückgängig machen oder die Funktionalität ändern müssen.