Eigentlich wollte ich diesen Blog ja mit einem weniger emotionalen Beitrag starten, aber leider bleibt mir keine andere Wahl. Ich bin vielleicht etwas blauäugig an dieses Thema gegangen — obwohl mir eigentlich klar war, dass es mit dem Installieren eines Pakets bestimmt nicht getan ist. Seltsamerweise stimmt das nicht so ganz, aber dazu gleich mehr.
Das Ziel war es unter einer Linux Distribution wie z. B. Ubuntu einen VDA(Virtual Delivery Agent) zu installieren. Ubuntu ist eigentlich immer meine erste Wahl, wenn es um Linux-Distributionen geht. Ich mag den Paketmanager APT; da ich aus der Debian-Ecke komme und dort schon viel im Bereich Webserver gebastelt habe, bin ich irgendwann bei Ubuntu hängen geblieben. Aber auch CentOS gefällt mir sehr gut, und immer wenn ich die Gelegenheit habe, etwas zu spielen, installiere ich mir die eine oder andere Linux-Distribution.
Als Basis für meinen Installationsplan habe ich folgende Citrix Ressource ausgewählt https://docs.citrix.com/en-us/linux-virtual-delivery-agent/current-release/installation-overview/ubuntu.html . Leider zu spät habe ich den Punkt „Easy Install“ gesehen. So habe ich mehrere Stunden damit verbracht, in Ubuntu die richtige Reihenfolge der Hostnamen unter /etc/hosts zu bearbeiten. Wichtig ist, dass der FQDN an erster Stelle steht und am besten keine weiteren Einträge existieren, die irgendwie mit dem Hostnamen zusammenhängen. Warum das wichtig ist, fragt sich bestimmt der eine oder andere Leser. Das Problem, das sich aus dieser Situation ergeben hat, war: Winbind macht zwar einen Domainjoin, bekommt aber kein dynamisches DNS hin. Auch der VDA kann dann die SID wohl nicht richtig aus dem AD auslesen.
Es gibt auch andere Methoden eine Linux Maschine in eine Windows Domäne aufzunehmen. In dem oben verlinkten Beitrag findet ihr alle von Citrix unterstützten Varianten. Aber bei mir galt zu diesem Zeitpunkt noch: „Schuster, bleib bei deinen Leisten.“ Natürlich müssen auch noch andere Programme installiert werden. Z. B. benötigt der VDA ein Java Development Kit, eine PostgreSQL-Datenbank und — ganz wichtig — ein Werkzeug zur Zeitsynchronisierung. In dem Artikel wird Chrony vorgeschlagen. Ich persönlich habe es zwar installiert, dem Thema Zeit an dieser Stelle aber weniger Bedeutung beigemessen. Natürlich ist es in einer Produktivumgebung wichtig, dass die Zeit mit Active Directory, Delivery Controller usw. übereinstimmt — bei einem guten Hypervisor sollte das aber ohnehin meist der Fall sein.
Nachdem alle Softwarehürden überstanden waren, das müsste dann auch ungefähr die Zeit gewesen sein wo ich den Punkt „Easy Install“ gefunden habe, ging es ans Einrichten der Verbindung zum Delivery Controller. Hierzu gibt es unter /opt/Citrix/VDA/sbin/ctxsetup.sh ein Skript, das die wichtigsten Parameter abfragt. Leider hat selbst nach einem Reboot der VDA seinen Dienst versagt und die Informationen unter /var/log/xdl/vda.log waren sehr dürftig. Das führte mich zum nächsten Skript in diesem Ordner /opt/Citrix/VDA/sbin/ctxcleanup.sh. Dieses Skript bereinigt wohl bestehende Datenbankeinträge sowie bestehende Einträge zu Domainjoins etc. Mir wurde das allerdings erst später klar. Dann fand ich auch noch das dritte Skript: /opt/Citrix/VDA/sbin/ctxinstall.sh — das eigentliche Installationsskript, das man ausführen kann, wenn man den Weg über Easy Install nehmen möchte. In diesem Fall muss man keine Pakete selbst installieren, der Installer erledigt das alles. Auch den Domainjoin übernimmt er. Wichtig ist nur, dass er einmal den Domänennamen und einmal den NetBIOS-Domänennamen (oder Prä-Windows-2000-Namen) haben möchte.
Fast war es dann geschafft. Nach Anlegen eines Maschinenkataloges ( Server OS ) mit manueller Bereitstellung und einer Bereitstellungsgruppe wartete ich nur darauf endlich loszulegen. Die Maschine registrierte sich aber nicht am Delivery Controller. Also loggte ich mich erneut auf der Maschine ein, um das Log zu kontrollieren — und seltsamerweise stand in der vda.log, dass die VM registriert ist. Also wieder zurück in den Delivery Controller, und siehe da: Die Maschine war registriert. Na, vielleicht einfach zu wenig gewartet. Wie sich später herausgestellt hat, muss tatsächlich ein Login erfolgen. Des Fehlers konnte ich allerdings bis heute nicht richtig Herr werden. Denn manchmal geht’s und manchmal eben nicht.
Das nächste Problem ließ aber nicht lange auf sich warten. Beim ersten Versuch die Session herzustellen wurde das Bild auf der Konsole schwarz sowie auch auf der Citrix Session und nichts passierte. Nach etwas Internetrecherche bin ich auf einen Eintrag im Citrix-Forum gestoßen: Man sollte folgendes Paket nachinstallieren: apt install xserver-xorg-core. Nach einem Reboot, erneutem Anmelden und dem Versuch, eine Citrix-Session zu starten, war der Bildschirm tatsächlich nicht mehr schwarz, sondern grau/blau — mit einer X11-Dialogbox und der Meldung „Login Invalid“. Klickt man auf OK, erhält man die Möglichkeit, sein Passwort erneut einzugeben. Dabei ist mir aufgefallen, dass der Benutzername dem samAccountName entspricht und nicht dem UserPrincipalName, den ich beim Login via Citrix Gateway verwende. Das hat mich nach einiger Recherche zu der Erkenntnis geführt, dass Winbind nicht mit UPNs umgehen kann, sondern nur mit samAccountName. Da ich aber keine Lust hatte, mein komplettes NetScaler-Setup um einen weiteren LDAP-Server zu erweitern, suchte ich nach einer anderen Lösung.
Nachdem Tag 1 schon vollständig mit dem Thema Linux VDA versaut war, habe ich an Tag 2 beschlossen, alles noch einmal neu zu machen — inklusive eines anderen Betriebssystems. CentOS 7 sollte es sein, in der Minimal-Installation plus Desktop. Leider musste ich etwas googeln, da es dafür keine fertige Lösung gibt. Für den Fall, dass jemand vor dem gleichen Problem steht, hier die Kurzanleitung:
- yum groupinstall „GNOME Desktop“ „Graphical Administration Tools“
- unlink /etc/systemd/system/default.target
- ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
- reboot
Nachdem das Betriebssystem soweit war habe ich das entsprechende VDA Paket geladen. Wichtig ist, dass CentOS 7 in der neuesten Version auch nur mit den neuesten VDAs unterstützt wird (1808 funktioniert z. B. nicht). Ich habe dann den 1912er VDA besorgt, obwohl die Laborumgebung noch auf 1808 läuft. Diesmal bin ich genau nach Easy Install vorgegangen. Als Software zur Domänenanbindung habe ich SSSD gewählt, weil ich gelesen hatte, dass es mit UPNs klarkommt. Allerdings wohl nicht von Haus aus, denn nach der Installation und meinem ersten Test hatte ich noch den gleichen Fehler wie am Tag zuvor. Ich habe dann folgenden Citrix Artikel befolgt https://support.citrix.com/article/CTX235006 und die Regular Expression in die sssd.conf eingefügt.
Nun war es so weit: das erste Mal eine Linux-Sitzung via Citrix. Im Anschluss habe ich noch einiges an Software auf der VM installiert und habe somit immer eine Linux-VM greifbar, wenn ich sie benötige. Als Nächstes plane ich das automatisierte Ausrollen von Linux-VMs via MCS — und vor allem, das Ganze auch mit Ubuntu zum Laufen zu bekommen.