Seit dem letzten Update verfügt das Univention App Center nun über die Neuerung „App Settings“. Sie ermöglichen eine einfache Konfiguration einer App aus der Univention Management Console heraus. Dieses neue Feature haben wir gebaut, damit App-Anbieter mit einfachen Mitteln die Integrationstiefe einer App in UCS verbessern und die Inbetriebnahme einer App deutlich vereinfachen können.
Im Fokus des App Centers
Seit der ersten Version in UCS 3.1 im Jahre 2012 hat sich das App Center zu einem mächtigen Werkzeug entwickelt, mit dem Software-Anbieter ihre Lösung präsentieren und bei Anwendern platzieren können. Anwender können auf der anderen Seite einfach und sicher neue Softwarelösungen ausprobieren, in Betrieb nehmen und später aktuell halten.
Von Beginn an war uns wichtig, dass Apps einerseits einfach installiert und getestet, andererseits aber auch tief in die Domäne integriert werden können. Gleichzeitig sollten sie aber auch auf keinen Fall die Stabilität des gesamten Systems beeinträchtigen. Die Entwicklungen, die wir in den vergangenen Jahren für das App Center vorgenommen haben, hatten immer diesen Fokus.
Ein wichtiger Meilenstein für UCS als App Plattform war dabei die mit UCS 4.1 eingeführte Unterstützung von Docker. Seit der Einführung der Docker-Technologie werden Apps als Container ausgeliefert, was für Anwender wie Anbieter gleichermaßen den Komfort erhöht. Denn die Kapselung von Apps verspricht auf der einen Seite Sicherheit, auf der anderen Einfachheit.
Univention hat dabei von Beginn an beides unterstützt: UCS-basierte Container, in denen ad hoc Pakete der Software-Anbieter installiert werden könnten (was sie von der Vorstellung her in die Nähe virtueller Maschinen rückt) und „klassische“ Container, die vom Hersteller gebaut und bereits voll funktionsfähig ausgeliefert werden.
App Settings: Wozu dient das neue Feature?
Wir haben nun im Univention App Center mit den „App Settings“ eine Funktion integriert, die die Möglichkeiten von Software, mit UCS zu interagieren, erweitert und einen echten Mehrwert für App-Anbieter verspricht.
Über die „App Settings“ kann Anwendern aus der Univention Management Console heraus ein Formular präsentiert werden, mit dem sie die Software während der Installation und aber auch im Nachhinein konfigurieren können.
Ein Beispiel: Im Arbeitsablauf einer bestimmten Software ist vorgesehen, dass nach bestimmten Aktionen Mails an Nutzer verschickt werden. Dazu benötigt sie jedoch vom Administrator Informationen über die Mailkonfiguration in der Domäne (SMTP-Server, -Port, sowie Benutzername und Passwort).
Mit den App Settings kann ein einfaches Formular erstellt werden, dass die nötigen Informationen dafür abfragt und das beispielsweise so aussehen könnte:
Ein Klick auf den „Apply Changes“-Button oben rechts würde diese Informationen in den Container übertragen und die App entsprechend konfigurieren.
Die Technik dahinter: Einfache Textdateien
Technisch handelt es sich um eine ini-Datei, die das Formular definiert. Eine zweite Datei wird im Container ausgeführt und hat dort Zugriff auf die eben eingegebenen Daten.
Die settings-Datei sähe im Beispiel so aus:
[myapp/smtp/server] Description = SMTP Server [myapp/smtp/port] Type = Int Description = SMTP Port [myapp/smtp/user] Description = Username Description[de] = Benutzername [myapp/smtp/password] Type = PasswordFile Filename = /etc/myapp.smtp-secret
Die Namen der Sections in der ini-Datei sind frei wählbar und bestimmen den internen Namen, unter dem die Werte des Formulars im Container gespeichert werden.
Hat ein Anwender nun das Formular ausgefüllt, müssen die Werte noch verarbeitet werden. Dazu benötigen wir eine zweite Datei, das configure-Skript:
#!/bin/bash # if we were a UCS container, we could do "ucr get myapp/smtp/server" SMTP_SERVER=$(grep -e '^myapp/smtp/server: ' /etc/univention/base.conf | sed -e 's|^myapp/smtp/server: ||') SMTP_PORT=$(grep -e '^myapp/smtp/port: ' /etc/univention/base.conf | sed -e 's|^myapp/smtp/port: ||') SMTP_USER=$(grep -e '^myapp/smtp/user: ' /etc/univention/base.conf | sed -e 's|^myapp/smtp/user: ||') SMTP_PASSWORD=$(cat /etc/myapp.smtp-secret) # using the values needs deep understanding of the App of course. as this is just an easy example, we do: if [ -z "$SMTP_SERVER" -o -z "$SMTP_PORT" -o -z "$SMTP_USER" -o -z "$SMTP_PASSWORD" ]; then rm /opt/myapp/settings/smtp.settings exit 0 fi cat > /opt/myapp/settings/smtp.settings <<EOF server="$SMTP_SERVER" port="$SMTP_PORT" user="$SMTP_USER" password="$SMTP_PASSWORD" EOF chmod 0660 /opt/myapp/settings/smtp.settings /opt/myapp/bin/reload
App Settings und Startparameter von Docker-Containern
Wenn es sich bei der Docker-App im App Center im Prinzip um einen Docker-Container handelt, wie man ihn auch im Docker Hub finden kann, dann braucht es häufig verschiedene Startparameter, ohne die der Container nicht funktioniert. Auf der Kommandozeile benutzt man dazu:
docker run myapp:1.0 -e SITENAME="My Site"
Die Variable SITENAME könnte in diesem Beispiel dazu dienen, einige initiale Daten zu schreiben, sodass der Anwender eine „vorkonfigurierte“ Installation zu sehen bekommt. Mit den „App Settings“ kann man diese Variable zur Startzeit übergeben. Der Anwender wird vor der Installation gefragt, welchen Wert der Parameter haben soll:
[SITENAME] Description = Name of the initial Site Description[de] = Name der initialen Site Show = Install Required = True
Mit dieser simplen Maßnahme hat die App nun so etwas wie einen sehr einfachen „Installer“.
Ausblick
Alle für App Settings notwendigen Dateien können im App Provider Portal hochgeladen werden. In unserer Dokumentation finden Sie weitere, darüber hinaus gehende Möglichkeiten der settings-Datei.
Wir hoffen, Ihnen mit den „App Settings“ eine Möglichkeit anzubieten, die Konfiguration von Apps wesentlich einfacher gestalten zu können. Für wichtige Einstellungen, die nur umständlich in der App selbst vorgenommen werden können, erhöht es den Komfort für Anwender, da sie die Univention Management Console nicht verlassen müssen und einige Schritte möglicherweise durch das configure-Skript vereinfacht werden können. Es kann aber eben auch genutzt werden, um eine „graphische“ Installation der App zu ermöglichen, die es so zuvor gar nicht gegeben hat, um z.B. eine Reihe notwendiger Parameter an den Docker-Container zur Startzeit zu übergeben.
Lust auf mehr? Dieser Blogartikel könnte Sie auch interessieren:
- Neu in UCS 4.1: Docker Apps für das Univention App Center
- Einführung: Univention App Katalog und die UCS Appliances
Bei weiteren Fragen helfen wir Ihnen gern über unser Forum weiter oder nutzen Sie einfach unsere Kommentarfunktion auf dieser Seite.