Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
software:etckeeper [2012/08/04 16:04] mhoffmann |
software:etckeeper [2012/10/11 10:23] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== 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 | ||
- | <code> | ||
- | # sudo apt-get intstall "package" | ||
- | </code> | ||
- | 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: | ||
- | <code> | ||
- | # sudo apt-get install git-core | ||
- | </code> | ||
- | |||
- | Danach wird noch der ETCkeeper installiert: | ||
- | <code> | ||
- | # sudo apt-get install etckeeper | ||
- | </code> | ||
- | |||
- | ===== 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: | ||
- | <code> | ||
- | # sudo vi /etc/etckeeper/etckeeper.conf | ||
- | </code> | ||
- | |||
- | Da standardmäßig das VCS "bazaar" genutzt wird muss dieses auskommentiert werden und git angegeben werden. | ||
- | Die Konfiguration sieht dann folgendermaßen aus: | ||
- | |||
- | <code> | ||
- | # 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 | ||
- | </code> | ||
- | |||
- | 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 | ||
- | <code> | ||
- | # sudo etckeeper init | ||
- | </code> | ||
- | Es sollte die Meldung ''Initialized emtpy Git repository in /etc/.git/'' erscheinen. | ||
- | |||
- | Danach muss der Inhalt von /etc noch zur Versionskontrolle hinzugefügt werden: | ||
- | <code> | ||
- | # cd /etc | ||
- | # sudo git status | ||
- | # sudo git commit -m "initial checkin" | ||
- | # sudo git gc //gc komprimiert das Repository um Platz zu sparen. | ||
- | </code> | ||
- | |||
- | 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: | ||
- | <code> | ||
- | # sudo etckeeper commit | ||
- | </code> | ||
- | |||
- | 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: | ||
- | <code> | ||
- | # git log | ||
- | </code> | ||
- | 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 | ||
- | <code> | ||
- | # sudo git checkout <Die ersten paar Ziffern der alten Version> --<File das zurückgesetzt werden soll> | ||
- | </code> | ||
- | |||
- | Soll dann bspw. wieder auf die neueste Version zurückgegriffen werden, so geschieht dies mit: | ||
- | <code> | ||
- | git checkout master | ||
- | </code> | ||
- | **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): | ||
- | <code> | ||
- | git remote add origin git@example.com:my_project | ||
- | </code> | ||
- | 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: | ||
- | <code> | ||
- | git remote add origin ssh://git@example.com:[PORT]/my_project | ||
- | </code> | ||
- | |||
- | ==== Repository initial pushen ==== | ||
- | <code> | ||
- | sudo git push -u origin master | ||
- | </code> | ||
- | |||
- | ==== 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: | ||
- | <code> | ||
- | #!/bin/bash | ||
- | set -e | ||
- | |||
- | git push origin master | ||
- | </code> | ||
- | |||
- | ===== 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 sicherung }} |
Bei Verwendung dieses Wikis erklären Sie sich mit dem Haftungsausschluss, Nutzungsbedingungen und der Datenschutzerklärung dieses Wikis einverstanden. Impressum.