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:
-
Ein CentOS 7-Droplet mit einem Benutzer ohne Rootberechtigung, den Sie in den Schritten 1 bis 4 unter https://www.digitalocean.com/community/tutorials/initial-server-setup-with-centos-7 [einrichten können. dieses Tutorial].
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.