Hsadmin

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen

hsadmin ist ein in Entwicklung befindliches Konfigurations-Werkzeug für Internet-Server, das speziell zu der flexiblen Konfiguration der Webspace-Angebote der Hostsharing eG passen soll.

hsadmin

Die Bedienung erfolgt über einen Web-Frontend für die Kunden und Personal, einen Kommandozeilen-Frontend (zum Beispiel für Skripte), oder über eine Programmierschnittstelle (für weitere Frontends). Das Kernsystem wird von der Kundenverwaltung (Kontaktdaten, Rechnungen, gebuchte Pakete und so weiter) über die Paketverwaltung (Unix-Accounts, Datenbanken, Datenbank-User etc.) und der Domainverwaltung (registrieren, aufschalten, E-Mail-Adressen einrichten und so weiter) ein breites Spektrum der Konfiguration ermöglichen. Es wird möglich sein, weitere Module entweder zentral, oder auch für einzelne Reseller hinzuzufügen. Das "Look-and-Feel" des Web-Fronts wird ebenfalls von Resellern anpassbar sein.

hsadmin ist OpenSource (GPL) und basiert im Wesentlichen auf der Java Enterprise Edition. Es besteht aus einem Web-Client (JSP/JSF) und einem Kommandozeilen-Client (C Programming language) einem Server (EJB3) für die Anwendungslogik und einem Queue-Server für die Systemkommandos (JMS-Client). Die Zugangskontrolle erfolgt orientiert an Rollen und den Datensätzen im Server (an der EJB3-Schnittstelle). Direkte root-Rechte werden nur von dem relativ kleinen Queue-Server benötigt.

Aktuell freigeschaltete Module

Mit hsadmin können derzeit folgende Verwaltungsaufgaben erledigt werden:

Modul Beschreibung / Anleitung
Benutzerverwaltung Derzeit nur per Kommandozeile. Beschreibung steht in User
E-Mail Adressen Derzeit nur per Kommandozeile. Beschreibung steht in E-Mail
Domain Status Derzeit nur per Kommandozeile. Beschreibung steht in Domain

Passwort und Konfiguration von hsadmin

Das eigene Passwort muss dabei nur einmalig pro Session eingegeben werden. Ein sogenanntes Ticket-Granting-Ticket (TGT) wird dafür in ~/hsadmin.tgt gespeichert.

Zudem kann man eine Konfigurations-Datei ~/.hsadmin.conf anlegen,in der i.d.R. folgende Einträge sinnvoll sind:

userName=xyz00
passWord=geheim

Der Username wird per Default vom Login-User genommen oder kann mit -u/--user: angegeben werden. Das Passwort ggf. erfragt, falls kein gültiges TGT mehr vorliegt.

Man kann sich das Programm hsadmin auch lokal installieren. Dazu gehört ein Shell-Startscript und ein jar-File. Es wird Java6 benötigt.

/usr/local/bin/hsadmin
/usr/local/lib/hostsharing/hsadmin/HSadminCLI.jar

Eine Anmerkung noch: hsadmin läuft dezeit noch mangels besserer Alternativen auf einem sehr leistungsschwachen Server. Wir bitten daher von großen Experimenten abzusehen und nur wirkliche Aufgaben über die neuen Schnittstelle auszuführen.

Command-Line-Client

die Optionen des (CLI) erscheinen etwas umständlich. Das hat folgende Bewandnis:

Eine Anforderung war, dass das hsadmin CLI auch lokal installieren kann und es dennoch neue Module bedienen kann. D.h. das CLI hat inhaltlich kaum Informationen und leitet alles nach "Schema-F" an den Server weiter, sowie gibt einfach dessen Ausgabe wieder aus - ohne diese großartig zu interpretieren.

Der Grundaufbau ist:

hsadmin LOKALE-OPTIONEN \
GLOBAL-REMOTE-OPTIONEN \
MODUL.FUNKTION REMOTE-OPTIONEN OIDS ...

Die lokalen (vom hsadmin CLI selbst interpretierten) Optionen sind:

-u /--user:
für den UNIX-Usernamen,
unter dem das Programm arbeiten soll
-v /--version
gibt die Versionsnummer des hsadmin CLI aus
-V /--verbosity:
gibt den Gesprächtigkeits-Level 0-2 an (zum Debuggen)
-
liest weitere Remote-Parameter von stdin ein

Für die globalen Optionen siehe weiter unten.

Der eigentliche Funktionsaufruf wird mit -c /--call: eingeleitet. Dann folgt ein Modulname und ein Funktionsname, z.B. "user.search". Derzeit sind die folgenden Module freigegeben:

q - für die Auftrags-Queue in den Hives
user - für die UNIX-User inkl. Mailboxen

Anmerkung:

Da die anderen Module teilweise schon im Live-Test sind, gibt es sie schon. Wer sie aber verwendet, wird ggf. mit unwiderruflichem Datenverlust bestraft  ;-)


Dann folgen die Parameter für diesen Funktionsaufruf. Hier gibt es folgende Gruppen:

-w /--where:feld=wert
Abfrage nach einem bestimmten Wert eines bestimmten Feldes.
-s /--set:
Setzen des Wertes eines bestimmten Feldes.
(Wird ggf. ignoriert, z.b. bei *.search)
-d /--display:format
Spezifiziert das Ausgabeformat.
(Hat bei Funktionen ohne Daten-Ausgabe keine Wirkung.)

Die OIDS sind direkte Objekt-Identifier wie der Username (xyz00-test), der Paketname (xyz00), die Domain (example.org) oder die E-Mail-Adresse (test@exampl.org). Es können mehrere angegeben werden. Im Prinzip ist das nur eine Kurzform der jeweiligen -w Option, nur dass eben auch mehrere angegeben werden können.

Die globalen Optionen entsprechen den o.g. -w/-s/-d, nur dass sie für alle im selben hsadmin-Aufruf folgenden Funktionen gelten:

-W /--globalWhere:feld.wert
-S /--globalSet:feld.wert
-D /--globalDisplay:format

Ein paar Fallen:

  • Wenn man zwar Funktionsaufrufe per stdin in das CLI hineingibt,
    aber den "-" vergisst, dann werden diese einfach ignoriert.
    stdin wird aber ggf. auch anderweitig gebraucht, weshalb
    "-" nicht automatisch angenommen wird.
  • Wenn man gleich den ersten Aufruf mit "-" macht, wird dies derzeit noch als Passwort eingelesen, was natürlich dann schon zu einem Login-Fehler führt. Trick:
    Entweder das Passwort in der ~/.hsadmin.conf hinterlegen
    oder zunächst irgendeine andere Funktion aufrufen, die das Passwort abfragt und das TGT speichert.

Die Error-Codes ($? in bash-Scripten) sind derzeit noch recht unspezifisch. Geplant ist eine Unterscheidung zwischen wirklich unbekannten Fehlern (z.B. Fehlern in hsadmin), Remote- Kommunikations-Fehlern (wo man es dann einfach nochmal probieren könnte) und fachlichen Fehlern (bei denen man dann wohl hsadmin falsch bedient hat).

hsadmin Status von Änderungen

hsadmin -c q.search

Hier werden die letzen Aktion angezeigt, bitte den "Status" und "finished" beachten.

hsadmin Entwicklung

hsadmin wird ständig weiter entwickelt. Hier finden sich die Details:

http://www.hsadmin.de/prj/hsadmin