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.

Container technology Docker LogoEin 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 einfaches Formular, erzeugt durch App Settings

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“.

App Settings können vor der Installation abgefragt werden

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.

Die App Settings im App Provider Portal

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:

Bei weiteren Fragen helfen wir Ihnen gern über unser Forum weiter oder nutzen Sie einfach unsere Kommentarfunktion auf dieser Seite.

Ihr Kommentar

Open Source Software Engineer bei Univention. Dirk kümmert sich hauptsächlich um die Pflege und Weiterentwicklung des Univention App Centers.

Was ist Ihre Meinung? Hinterlassen Sie einen Kommentar!

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.