Schlagwort-Archive: Versionskontrolle

Linux-Server-Konfiguration versionieren mit etckeeper und git

Einleitung

Arbeitet man an Konfigurationseinstellungen eines Linux-Servers, kann es hilfreich sein, die geänderte Konfiguration zu versionieren. Im Fehlerfall können so Änderungen schnell und einfach zurückgenommen werden. Im weitaus günstigeren Erfolgsfall entsteht durch die Versionierung eine lückenlose Dokumentation der Änderungen.

Pakete

Die erforderlichen Pakete installieren:

Weiter mit der Einrichtung…

Konfiguration

In /etc/etckeeper/etckeeper.conf wird git als Versionsveraltung ausgewählt.

In der gleichen Daten können die Paketmanager ausgewählt werden, hier die entsprechende Konfiguration für Debian-basierte Systeme:

Git-Benutzer konfigurieren:

Die Initialisierung wird mit der Paketinstallation automatisch durchgeführt, somit besteht also sofort Betriebsbereitschaft.  🙂

Bedienung

Nachfolgend noch einige Hinweise und Beispiele zur Nutzung. Hierbei befinden wir uns im Verzeichnis /etc.

Änderungen durchführen

Ändern wir /etc/apache2/httpd.conf und dokumentieren die Änderung:

Was aber, wenn die Änderung nicht zum gewünschten Erfolg geführt hat?

Änderungen rückgängig machen

Ändern wir irgendetwas in der Apache-Konfigurationsdatei /etc/apache2/httpd.conf und machen die Änderung sofort wieder rückgängig:

Hierbei ist nicht mehr zu erkennen, dass die Datei geändert und wiederhergestellt wurde.

Bereits durchgeführte Änderungen rückgängig machen

Wurden die Änderungen bereits mittels commit durchgeführt, ist die Vorgehensweise eine andere:

Hierbei wird automatisch ein commit abgesetzt. Mittels git show kann die Änderung angezeigt werden:

Zum Schluss noch die Möglichkeit, Dateien gänzlich von der Versionierung auszuschließen.

Dateien von Versionierung ausschließen

Um Dateien von der Versionierung auszuschließen, müssen sie in .gitignore aufgeführt werden:

Da die zukünftig zu ignorierende Datei bereits während der Initialisierung bestanden hat, muss sie noch entfernt werden.

Have fun!

Subversion und WebSVN – Debian 6

Erforderliche Pakete

Zunächst wird Subversion, WebSVN und das zugehörige Apache Modul libapache2-svn installiert.

Bei der Frage, ob WebSVN konfiguriert wird, bestätigen wir, ebenso die automatische Apache-Konfiguration. Als Pfadangaben wird /var/lib/svn jeweils üernommen.

Repository

Erst wird ein entsprechendes Verzeichnis erstellt.

Darin wird dann ein leeres Subversion-Repository erzeugt.

Im Anschluss werden die Dateiberechtigungen gesetzt, damit Apache auf das Repository zugreifen kann.

Die Datei /var/lib/svn/<repository1>/conf/svnserve.conf wird bearbeitet, hierbei werden die Kommentarzeichen bei folgenden drei Zeilen entfert:

In der Datei /var/lib/svn/<repository1>/conf/passwd werden die Benutzer hinterleget.

WebSVN

Benutzer und Passwort…

Benutzer dürfen lesen und schreiben, jeder andere kann lesend zugreifen. Die Datei /etc/apache2/dav_svn.authz wie folgt erstellen:

Die Konfiguration des Apache-Moduls wird unter /etc/apache2/mods-available/dav_svn.conf angepasst.

Los gehts…

Subversion starten und die Apachekonfiguration neu laden.

Der Zugriff auf WebSVN erfolgt über http://url-oder-ip-des-svn-servers/websvn.

Soll Subversion nach einem Reboot nicht von Hand gestartet werden, kann folgender Cronjob helfen:

Zentrales Git Repository

Vorwort

Git ist ein Versionskontrollsystem, welches ursprünglich für die Entwicklung am Linux-Kernel entstanden ist, dieser Artikel beschreibt, wie ein zentrales Git Repository unter Debian (hier Debian 6) aufgesetzt werden kann. Hierbei soll jedem Benutzer eine lokale Kopie des Repository zur Entwicklung zur Verfügung stehen. Die Änderungen können schließlich in das Hauptrepository einfließen. Mit Gitosis können Git-Repositories einfach und sicher verwaltet werden. Gitosis nutzt SSH zur Authentifizierung, es trennt die Benutzer von bestehenden Linux-User-Accounts.

Installation von Git

Für die Installation wird das Paket git-core genutzt und die zugehörigen Abhängigkeiten installiert.

Die Konfiguration erfolgt weiter unten.

Installation Gitosis

Auch hier wird das Paket gitosis samt den zugehörigen Abhängigkeiten installiert.

Konfiguration Gitosis

Schlüsselverzeichnis erstellen (Server)

Gitosis nutzt zur Authentifizierung SSH mit dem RSA Public-Private Key Mechanismus. Auf dem Server wird zunächst ein Verzeichnis erstellt, in welches später die öffentlichen Schlüssel der Clients abgelegt werden.

Schlüssel erstellen (Clients)

Auf den Clients, welche administrativen Zugang erhalten, werden die Schlüsselpaare erstellt. Die folgenden Abfragen nach Speicherort und Passphrase können ohne Eingabe quittiert werden.

Standardmäßig werden die Informationen unterhalb des Home-Verzeichnisses im Verzeichnis .ssh abgelegt.

Kopieren des öffentlichen Schlüssels (Client) auf den Server

Der öffentliche Schlüssel id_rsa.pub wird in das vormals erstellte Verzeichnis kopiert.

Hierbei wird <git-server> durch IP-Adresse oder Rechnername des zentralen Repository-Servers ersetzt, <username> wird mit dem Benutzernamen der administrativen Benutzer gefüllt. Die Benutzer- und Gruppenberechtigungen auf dem Repository-Server werden anschließend gesetzt.

Git-Repository erstellen (Server)

Die Initialisierung des Repositories erfolgt unter dem Benutzer gitosis.

Repository auschecken (Client)

Auf dem Client wird das Git-Repository samt Einstellungen ausgecheckt.

Entwicklungs-Repository erstellen (Client)

Nachdem das Admin-Repository ausgecheckt wurde, können Änderungen durchgeführt werden. Ein Entwicklungs-Repository develrepository wird erstellt.

Die Änderungen an der Konfiguration werden hochgestellt:

Das Verzeichnis des Repositorys wird auf dem Client vorbereitet:

Das Verzeichnis wird mit Inhalt (testdatei) gefüllt. Anschließend wird hochgestellt:

Weiteren administrativen Benutzer erstellen

Auf dem Client wird die Datei ~/gitosis-admin/gitosis.conf erweitert um den neuen Benutzer.

Diese Änderung wird dann committed und hochgestellt.

Zur Erstellung eines weiteren administrativen Benutzers, wird auf dem neuen Client wie zuvor beschrieben ein weiteres Schlüsselpaar erstellt. Es wird anschließend auf den bestehenden Client kopiert.

Auf dem bestehenden Client wird der vormals kopierte öffentliche Schlüssel ins Schlüsselverzeichnis übernommen. Die Änderungen werden committed und übertragen:

Installation Gitweb (Server)

Gitweb wird aus den Paketquellen samt Abhängigkeiten installiert.

Konfiguration Gitweb (Server)

Konfigurationsdatei anpassen

Die Konfigurationsdatei /etc/gitweb.conf wird angepasst. Hier wird das Verzeichnis $projectroot auf „/srv/gitosis/repositories“ gesetzt:

Apache-Konfiguration anpassen

Eine neue Seitenkonfiguration /etc/apache2/sites-available/gitweb wird erstellt:

Apache muss auf das Repository-Verzeichnis zugreifen können. Anschließend aktivieren und den Webserver neu laden, danach sind die Repositories unter http://<git-server>/gitweb zu erreichen.

Apache absichern

Im produktiven Einsatz muss der Zugriff unbedingt abgesichert werden.