====== ETCkeeper ====== ETCkeeper ist ein sehr nützliches Programm welches das kritische Verzeichnis etc/ unter Versionskontrolle stellt. Dies ist nützlich bei der Installation von neuen Packages, Änderungen in der Konfig und bei allgemeinen Backups. ETCkeeper wird außerdem automatisch ausgeführt wenn per aptitude # sudo apt-get intstall "package" neue Pakete installiert werden. Für ETCkeeper können unterschiedliche Versionverwaltungssysteme genutzt werden, am meisten Sinn macht jedoch GIT((engl. für "Blödmann")), da es als einziges VCS((Version Controll System = Versionskontrollsystem)) auch symbolische Links verarbeitet und versionieren kann. ===== Installation ===== Zunächst muss GIT installiert werden: # sudo apt-get install git-core Danach wird noch der ETCkeeper installiert: # sudo apt-get install etckeeper ===== Konfiguration ===== Damit der ETCkeeper auch weiß was für ein VCS er nutzt muss ihm das in der Konfiguration mitgeteilt werden. Dazu wird die Konfigurationsdatei bearbeitet: # sudo vi /etc/etckeeper/etckeeper.conf Da standardmäßig das VCS "bazaar" genutzt wird muss dieses auskommentiert werden und git angegeben werden. Die Konfiguration sieht dann folgendermaßen aus: # The VCS to use. # VCS="hg" VCS="git" #VCS="bzr" # VCS="darcs" # Options passed to git commit when run by etckeeper. #GIT_COMMIT_OPTIONS="" # Options passed to hg commit when run by etckeeper. #HG_COMMIT_OPTIONS="" # Options passed to bzr commit when run by etckeeper. #BZR_COMMIT_OPTIONS="" # Options passed to darcs commit when run by etckeeper. #DARCS_COMMIT_OPTIONS="" # Uncomment to avoid etckeeper committing existing changes # to /etc automatically once per day. #AVOID_DAILY_AUTOCOMMITS=1 # Uncomment to avoid etckeeper committing existing changes to # /etc before installation. It will cancel the installation, # so you can commit the changes by hand. #AVOID_COMMIT_BEFORE_INSTALL=1 # The high-level package manager that's being used. # (apt, pacman-g2, yum etc) HIGHLEVEL_PACKAGE_MANAGER=apt # The low-level package manager that's being used. # (dpkg, rpm, pacman-g2, etc) LOWLEVEL_PACKAGE_MANAGER=dpkg Damit der ETCkeeper funktioniert muss zunächst einmal ein lokales GIT-Repository angelegt werden und die Grundkonfiguration geschrieben werden. Die Initialisierung geschieht im Verzeichnis ''/etc'' einfach über # sudo etckeeper init Es sollte die Meldung ''Initialized emtpy Git repository in /etc/.git/'' erscheinen. Danach muss der Inhalt von /etc noch zur Versionskontrolle hinzugefügt werden: # cd /etc # sudo git status # sudo git commit -m "initial checkin" # sudo git gc //gc komprimiert das Repository um Platz zu sparen. Nachdem diese konfiguration vorgenommen wurde arbeitet etckeeper im Hintergrund und versioniert automatisch bei der installation von Paketen. ==== Commit ==== Bei manuellen Änderungen in der Konfiguration muss folgendermaßen vorgegangen werden um Änderungen zu versionieren: # sudo etckeeper commit Es öffnet sich dann ein VI-Fenster in dem eine commit Message angegeben werden **muss**! Die Zeilen mit Hashtag am Anfang dienen nur zur Information und werden nicht als Message comitted. Nach Eingabe eines **kurzen und präzisen** Kommentares drückt man ''ESC'', danach ''wq'' und bestätigt mit ''Enter''. Danach erhält man auf dem Bildschirm eine ausgabe, welche Dateien committed wurden. Hat man keinen Kommentar angegeben meldet etckeeper dies. ==== Version einer Datei zurücksetzen ==== Falls eine Datei in /etc zurückgesetzt werden kann dies einfach mit folgendem Befehl realisiert werden: Zuerst muss im Log nachgesehen werden welche Version wieder geholt werden soll: # git log Im Log kann man dann einsehen welche Version man haben will. Hierzu dienen die ersten Stellen des langen Hash-Codes. Zurückgesetzt wird die Version dann mit # sudo git checkout -- Soll dann bspw. wieder auf die neueste Version zurückgegriffen werden, so geschieht dies mit: git checkout master **Achtung:** hierbei werden ALLE Dateien aus dem master-commit geholt und überschrieben! ===== Entferntes GIT-Repository einrichten und automatischen Push einrichten ===== Um eine noch bessere Datensicherheit zu erlangen macht es Sinn, das GIT-Repository auf einen entfernten Server zu pushen. Die Einrichtung hierfür ist nicht schwer. Eine Möglichkeit GIT-Repositories zu Hosten ist [[software:gitolite|]]. ==== Root SSH-Keys ==== Da Commit und Push des etckeepers nur mit Rootrechten möglich ist, braucht man für den SSH-Zugriff auf das entfernte GIT-Repository SSH-Keys für den Benutzer **root**: - Als **root** auf der Shell anmelden mit ''sudo -s'' - SSH-Keys mit ''ssh-keygen'' erstellen - PublicKey **id_rsa.pub** aus dem Verzeichnis **/root/.ssh/** kopieren. ==== Remote Repository einrichten ==== Im Verzeichnis **/etc** folgenden Befehl mit den entsprechenden Serverdaten ausführen (evtl. als root): git remote add origin git@example.com:my_project wobei hier **git** der Nutzer des Gitbenutzers ist und **my_project** das Repository. Läuft der Git-Server nicht auf Port 22 so nutzt man folgenden Befehl: git remote add origin ssh://git@example.com:[PORT]/my_project ==== Repository initial pushen ==== sudo git push -u origin master ==== Push automatisieren ==== In der Config des etckeepers müssen nun noch zwei neue Dateien erstellt werden: * **/etc/etckeeper/commit.d/60vcs-commit-push** * **/etc/etckeeper/post-install.d/60vcs-commit-push** In beide Dateien fügt man folgenden Inhalt ein: #!/bin/bash set -e git push origin master ===== Weiterführende Links und Infos ===== Ein deutscher Artikel über ETCkeeper: [[http://www.linux-magazin.de/Online-Artikel/Etckeeper-stellt-Systemkonfiguration-unter-Versionskontrolle]] Offizielle Seite: [[http://kitenet.net/~joey/code/etckeeper/]] Offizielle Entwicklerbeschreibung und Tutorial: [[http://git.kitenet.net/?p=etckeeper.git;a=blob_plain;f=README;hb=27ca6c9eb668c9ab55cf65f8e620893589536c84]] {{tag>versionsverwaltung backup }}