Gitosis über Web und CLI administrieren

Wer nicht so viel Geld ausgeben will, kann auf eine der vielen GIT Verwaltungstools zurückgreifen. Sehr beliebt sind hier gitolite oder gitosis Letzteres setzen wir bei netz98 seit Jahren erfolgreich ein.

Leider bietet gitosis z.B. keine Weboberfläche zur Administration an. Das ist erstmal nicht weiter schlimmt, wenn man nur wenige Repositories verwaltet. Doch mit wachsender Anzahl verliert man schnell die Übersicht. Das kann auch unter Umständen zu Sicherheitslücken führen. Verlässt ein Mitarbeiter das Unternehmen sollte man auch die Berechtigungen in den einzelnen Gruppen entziehen. Ist die Datei aber unübersichtlich vergisst man vielleicht an der einen oder anderen Stelle etwas anzupassen.

Hier kommt nun mein neues Tool n98-gitosis-admin zum Einsatz. Es liest die Konfigration aus der gitosis.conf im ausgecheckten gitosis-admin Repository aus und sortiert die Inhalte. So werden die Gruppen aus erstes in die Datei geschrieben. Gefolgt von den Repo-Einträgen. Gitosis erlaubt das hinzufügen von Repositories durch das einfache hinzufügen von Einträgen in eine Liste innerhalb einer Benutzergruppe. Auch hier verliert man schnell den Überblick, wenn die Datei z.B. mit vim editiert wird. Die Liste wird mit der Zeit bei manchen Gruppen immer länger. Mein Tool schafft auch hier Übersicht. Es werden nun alle Repo-Einträge explizit auch aus den Gruppenrechten generiert. Ebenso kein ein Benutzer über ein einzige Anweisung gelöscht und aus allen Gruppen automatisch entfernt werden.

CLI Interface

Über das CLI interface können folgende Befehle ausgeführt werden:

gitosis:persist: Persistiert die Konfiguration. Pushed zum Remote

group:add: Neue Gruppe erstellen

group:list: Alle Gruppen auflisten

group:remove: Löscht eine Gruppe

group:repo:add:readonly: Fügt einer Gruppe ein Repository mit Lesezugriff hinzu

group:repo:add:writable: Fügt einer Gruppe ein Repository mit Schreinzugriff hinzu

group:user:add: Für einen Benutzer einer bestehenden Gruppe hinzu

group:user:remove: Entfernt einen Benutzer aus einer Gruppe

repo:add: Erstellt ein neues Repository

repo:list: Listet alle Repositories alphabetisch auf.

repo:remove: Löscht ein Repository aus gitosis.

user:list: Listet über alle Gruppen hinweg alle Benutzer auf.

user:remove: Löscht einen Benutzer (auch aus Gruppen)

Flickr

Web Interface

Das Webinterface stellt noch eine Menge mehr Möglichkeiten bereit:

Gitosis Web Bild 1
Gitosis Web Bild 2
Gitosis Web Bild 3
Gitosis Web Bild 4

Download

Die Software ist auf github Opensource veröffentlicht. Sicherlich kann man sich noch vorstellen das eine oder andere Feature zu implementieren. So fehlt momentan noch ein Security Layer. Ebenso fehlt noch eine Lokalisierung z.B. in Deutsch.

https://github.com/cmuench/n98-gitosis-admin