In den meisten PoCs im Bereich NVIDIA GRID habe ich den Lizenzserver auf irgendeinem bestehenden Windows Server mitinstalliert. Oft hatte ich dabei Probleme mit der Java-Installation. Daraus ist die Idee geboren, den Lizenzserver unter Ubuntu bereitzustellen. Für die Installation habe ich ein Ubuntu 20.04 LTS in einer virtuellen Maschine installiert und die letzten Updates via apt update && apt upgrade eingespielt.
Als Nächstes muss eine entsprechende Java-Runtime installiert werden. Der NVIDIA License Server unterstützt neben der klassischen Java-Runtime von Oracle auch das OpenJDK, was lizenztechnisch mittlerweile die sichere Variante ist. Mit apt install default-jre führt man die Installation durch. Alle nötigen Pakete werden entsprechend geladen.
Im Anschluss laden wir noch das Apache Tomcat Paket. In der NVIDIA License Server Dokumentation wird zwar empfohlen, das Apache-Paket manuell zu laden und auf dem Hostsystem zu kompilieren, um den Support aller Features zu gewährleisten. Allerdings bezieht sich das wohl eher allgemein auf die eingesetzte Version: Es gibt viele Distributionen, die immer noch auf eine veraltete Tomcat-Version setzen bzw. keine neue Version in ihren Paketkatalog aufnehmen. Die Installation ist ähnlich einfach wie beim Java-JRE. Ein apt install tomcat9 tomcat9-admin erledigt alle nötigen Schritte.
Nun können wir uns der eigentlichen Lizenzserver Installation widmen. Im ersten Schritt müssen wir die aktuelle Version des Lizenzservers aus dem NVIDIA-Portal herunterladen. Stand aktuell 2020.05 Update 1 
Nachdem wir die ZIP-Datei heheruntergeladen haben, entpacken wir sie entweder direkt auf unserem Windows-PC oder kopieren sie komprimiert mit Hilfe eines SCP-/SFTP-Clients auf den Ubuntu-Server. Ich habe mich dafür entschieden, die ZIP-Datei vorher zu entpacken, und kopiere lediglich die setup.bin via WinSCP.
Die Datei setup.bin muss nun noch ausführbar gemacht werden mit **chmod u+x **
Wenn das geschafft ist, können wir das Setup mit ./setup.bin starten.
An dieser Stelle drücken wir lediglich Enter. Wir werden darauf hingewiesen, dass wir das Setup jederzeit mit quit beenden können.
Es folgt das Enduser License Agreement, das wir natürlich gewissenhaft gelesen haben und anschließend mit y bestätigen. 
Hier werden wir nach dem Installationsverzeichnis für unseren Lizenzserver gefragt. Man kann die Einstellung auf Standard belassen und einfach mit Enter bestätigen.
Im weiteren Verlauf müsst ihr den Pfad zu eurer Apache-Tomcat-Installation angeben. Auf einem Ubuntu System ist dies /var/lib/tomcat9
Die Firewallkonfiguration lasse ich anschließend ebenfalls auf Standard. Hier sollten im Nachgang mit UFW entsprechende Firewallregeln erstellt werden, die den Zugriff nur für bestimmte IP-Bereiche erlauben. Also mit Enter bestätigen.
Abschließend erhalten wir die Info, dass der Lizenzserver erfolgreich installiert wurde und wir noch ein weiteres Mal mit Enter bestätigen sollen.
Achtung: In Update 1 des Lizenzservers hat sich wohl ein kleiner Bug eingeschlichen. Beim ersten Aufruf des Lizenzservers über den Browser kam eine Fehlermeldung zurück. Der Grund ist, dass die zwei Programmelemente (fne.war und licserver.war) des Lizenzservers nicht in das webapps-Verzeichnis des Tomcat-Servers geschrieben wurden. Wir kopieren die beiden Dateien die sich unter /opt/flexnetls/nvidia/ui befinden mit einem cp *.* /var/lib/tomcat9/webapps. Anschließend starten wir den tomcat9-Dienst neu mit service tomcat9 restart.
Der erste Browseraufruf via http://hostname:8080/licserver sollte das Portal wie im Screenshot zum Vorschein bringen.
Wir können nun unter License Management eine im NVIDIA-Lizenzportal generierte Lizenzdatei hochladen, indem wir die Datei über Choose File auswählen und anschließend auf Upload klicken.
Die zur Verfügung stehenden Lizenzfeatures können über den Link auf License Feature Usage geprüft werden.
Nun ist es Zeit sich noch um ein kleines bisschen Sicherheit zu kümmern. Der Lizenzserver benötigt in der aktuellen Konfiguration keine Authentifizierung und kann somit von jedem Benutzer eingesehen und bearbeitet werden. Um das zu verhindern, wechseln wir noch einmal auf die Konsole und aktivieren die Option, dass eine Passworteingabe zur Anpassung der Konfiguration notwendig ist. Hierzu erstelle ich im ersten Schritt eine Variable, die mir den Umgang mit den folgenden Befehlen erleichtert. FLEXNETLS_BASEURL=http://localhost:7070/api/1.0/instances/~
Sobald die Variable erstellt ist, können wir mit dem nächsten Befehl die Anmeldung via Benutzername/Passwort aktivieren: ./nvidialsadmin.sh -config -set security.enabled=true -server $FLEXNETLS_BASEURL . _Um den Befehl erfolgreich auszuführen, müsst ihr euch im Pfad _/opt/flexnetls/nvidia/enterprise befinden.
Nach erfolgreicher Aktivierung (die Meldung „Invalid Input“ täuscht) könnt ihr euch im Portal unter Login mit den Daten admin/Admin@123 authentifizieren.
Zum Schluss ändern wir noch das Passwort des Admin-Benutzers. Wichtig zu wissen: Die Angaben in der Dokumentation stimmen nur eingeschränkt. So musste ich beim Ändern des Passwortes immer die Rolle mit angeben, ebenso wie vorher die Variable FLEXNETLS_BASEURL. Die fertige Zeile sieht wie folgt aus: ./nvidialsadmin.sh -authorize admin Admin@123 -users -edit admin Password1! ROLE_ADMIN -server $FLEXNETLS_BASEURL
Achtet bei der Vergabe des Passwortes darauf, keines zu verwenden, das als Steuerzeichen interpretiert werden kann — etwa das &-Zeichen. Es gibt zwar den Schalter -passwordConsoleInput, der gilt allerdings nur für das bereits vergebene Passwort zur Authentifizierung.
Das war es fürs Erste — damit habt ihr einen lauffähigen Lizenzserver, der von euren Clients verwendet werden kann. Im nächsten Schritt wäre noch eine Absicherung via SSL spannend; dort zeigt sich allerdings der Java-Teil der Anwendung von seiner schönsten Seite. Meine bisherigen Versuche sind immer gescheitert. Ich werde es aber demnächst mal mit einem SelfSigned Zertifikat direkt über die Java Tools versuchen. Ansonsten gilt wie immer: Solltet ihr Anregungen und Kritik haben könnt ihr gerne schreiben.












