Desktop Director – Installation & Konfiguration

In einigen Umgebungen macht es Sinn, den Desktop Director auf einem dedizierten Server zu installieren. Im Folgenden findet ihr eine Anleitung zur Installation und Konfiguration.

Installation

Mit einer einzigen Kommandozeile lässt sich der Director sowie seine abhängigen Rollen/Features/Komponente installieren:

<ISO-Drive>\x64\XenDesktopSetup\XenDesktopServerSetup.exe /components DESKTOPDIRECTOR /configure_firewall /noreboot /quiet /logpath C:\Logs

Sind die abhängigen Rollen/Features/Komponenten nicht bereits im Vorfeld installiert worden, benötigt der Server während der Installation einen Reboot (zu erkennen daran, dass in der CLI wieder Eingaben gemacht werden können) und auch wenn nach der erneuten Anmeldung das CLI Fenster des Installers nur kurz aufgeht und sich wieder schließt, läuft im Hintergrund die Installation weiter. Den aktuellen Status der Installation kann man sich fortlaufend anzeigen lassen über die PowerShell (in diesem Beispiel lasse ich mir immer die letzten 10 Zeilen des Logs ausgeben):

Get-Content 'C:\Logs\Citrix\XenDesktop Installer\XenDesktop Installation.log' -Tail 10 -Wait

Mit dem Eintrag <Datum/Uhrzeit>  :  XenDesktopSetup:The process is complete. ist die Installation abgeschlossen.

Konfiguration: Discovery Adressen

Standardmäßig wird bei einer Installation des Directors per CLI immer localhost als zu verwendender Delivery Controller eingetragen. Ist der Desktop Director auf einem dedizierten Server installiert worden, muss im IIS die Konfiguration an die tatsächlichen Desktop Controller angepasst werden.

Import-Module WebAdministration
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site/Director' -filter "appSettings/add[@key='Service.AutoDiscoveryAddresses']" -name "value" -value "<Site-Controller-FQDN>"

Sind in der Site mehrere Controller vorhanden, sind diese fortlaufend durch Komma getrennt anzugeben. Gleiches gilt auch, wenn man Controller aus mehreren Sites einbinden möchte.

Auch XenApp 6.5 Farmen lassen sich einbinden. Der Parameter hierfür ist jedoch standarmäßig nicht vorhanden und muss dementsprechend nicht geändert, sondern angelegt werden. Zudem ist hierfür ein wenig Vorkonfiguration erforderlich (siehe https://support.citrix.com/article/CTX209513).

Import-Module WebAdministration
Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site/Director'  -filter "appSettings" -name "." -value @{key='Service.AutoDiscoveryAddressesXA';value='<Farm-Controller-FQDN>'}
Konfiguration: HTTPS Binding

Als nächsten Schritt stellt man den Director auf HTTPS um. Voraussetzung dafür ist, dass bereits ein gültiges Server Zertifikat im Zertifikatsspeicher der lokalen Maschine vorliegt. Subject ist der Servername und es gibt nur ein Zertifikat, welches den Servernamen im Subject hat. In den folgenden Zeilen lese ich den Thumbprint des Zertifikats aus, erstelle ein einfaches HTTPS-Web-Binding, erstelle ein SSL-Binding zwischen dem Zertifikat und dem HTTPS-Web-Binding und lösche zu guter Letzt das standardmäßige HTTP-Web-Binding.

Import-Module WebAdministration
$CertSubject = <Server-Name>
$CertThumb = (Get-ChildItem cert:\LocalMachine\MY | Where-Object { $_.Subject -like "*$CertSubject*" } | Select-Object -First 1).Thumbprint
New-WebBinding -Name "Default Web Site" -IP "*" -Port 443 -Protocol https
Get-Item cert:\LocalMachine\MY\$CertThumb | New-Item -Path IIS:\SslBindings\0.0.0.0!443
Remove-WebBinding -Name "Default Web Site" -Protocol http
Konfiguration: Director Default Webpage

Um das IIS Virtual Directory des Desktop Directors zur Standardwebseite innerhalb der IIS Site zu machen, sind 3 Schritte erforderlich.

  1. Erstellen einer director.html im IIS Root Directory (standard: C:\inetpub\wwwroot).
  2. Entfernen eines director.html Eintrags in der Liste der Default Documents, falls er bereits existiert.
  3. Hinzufügen eines director.html Eintrags in die Liste der Default Documents mit Index Nummer 0 (Erster Wert in der Default Documents Liste)

Die director.html ist schnell erstellt mit dem Set-Content PowerShell Cmdlet:

$content = @"
 <script type="text/javascript">
  <!--
   window.location="<Redirect-URL>";
  // -->
 </script>
"@
Set-Content "C:\inetpub\wwwroot\director.html" -value ("$content") -Encoding Default

Für die Variable <Redirect-URL> gilt:

HTTP Verbindung:  window.location="/Director"
HTTPS Verbindung: window.location="https://<Servername>/Director";

Als nächstes prüfen wir, ob die director.html bereits in der Liste der Default Documents eingetragen ist und entfernen diese gegebenenfalls:

Import-Module WebAdministration
Get-WebConfigurationProperty -Filter "//defaultDocument" -PSPath "IIS:\sites\Default Web Site" -Name files.collection | Where-Object { $_.value -eq "director.html" }
Remove-WebConfigurationProperty -Filter "//defaultDocument" -PSPath "IIS:\sites\Default Web Site" -Name files -atElement @{value="director.html"} -ErrorAction Stop

Als letzten Schritt fügen wir die director.html als obersten Wert in die Default Documents Liste ein:

Import-Module WebAdministration
Add-WebConfiguration -Filter "//defaultDocument/files" -PSPath "IIS:\sites\Default Web Site" -AtIndex 0 -Value @{value="director.html"}
iisreset.exe
Konfiguration: Domain-Feld im Anmeldefenster vorkonfigurieren und/oder komplett ausblenden

Befindet sich der Desktop Server in einer Single-Domain/Single-Forest Umgebung, lässt sich das Domain Feld im Anmeldefenster vorkonfigurieren und die Eingaben für den Director-Benutzer reduzieren. Ist das Feld vorkonfiguriert lässt es sich zudem auch ausblenden. Hierzu öffnet man die Datei C:\inetpub\wwwroot\Director\LogOn.aspx und bearbeitet diese als Administrator.

Zum Vorkonfigurieren sucht man nach dem Tag <asp:TextBox ID="Domain" und fügt in den Tag die Parameter Text="<Domain-Name>" readonly="true" ein wie im Bild zu sehen. Für den Wert <Domain-Name> ist natürlich der Name der eigenen Domain anzugeben.

"C:\inetpub\wwwroot\Director\LogOn.aspx

Da mit obiger Konfiguration das Domain Feld per readonly Parameter für den Director-Benutzer sowieso nicht änderbar ist, blendet man es am Besten auch gleich aus. Hierzu sucht man nach dem Tag <asp:Label ID="DomainLabel" und fügt die Tags <div style='display:none' und </div> an den beiden auf dem Bild gelb markierten Positionen ein.

"C:\inetpub\wwwroot\Director\LogOn.aspx

Im Ergebnis sieht die Anmeldeseite nach den Anpassungen dann wie folgt aus:

Director Anmeldung
Director Anmeldung
Konfiguration: SSL Check deaktivieren

Standardmäßig erscheint an der Anmeldeseite beim Aufruf des Directors eine Nachricht You are not using a secure connection, wenn die Seite nicht über SSL aufgerufen wurde. Um dies zu deaktivieren muss in der Datei C:\inetpub\wwwroot\Director\web.config der Wert für den Parameter UI.EnableSslCheck auf false gesetzt werden.

Import-Module WebAdministration
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site/Director' -filter "appSettings/add[@key='UI.EnableSslCheck']" -name "value" -value "false"
Konfiguration: Activity Manager deaktivieren

Laut Citrix:

By default, the Activity Manager in Director displays a list of all running applications for a user’s session. To protect the privacy of users and the applications they are running, you can disable the Applications tab from listing running applications.

Um den Activity Manager zu deaktivieren muss in der Datei C:\inetpub\wwwroot\Director\web.config der Wert für den Parameter UI.TaskManager.EnableApplications auf false gesetzt werden.

Import-Module WebAdministration
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site/Director' -filter "appSettings/add[@key='UI.TaskManager.EnableApplications']" -name "value" -value "false"
Multi-Forest Umgebungen und große Active Directories

Laut Citrix:

When searching user accounts, the search process is either slow or it fails within Desktop Director.

Dieses Verhalten tritt in großen AD Umgebungen oder Umgebungen mit mehreren Forests auf. Grund dafür ist, dass der Director standardmäßig alle Global Catalogs im AD Forest per LDAP durchsucht. In großen Umgebungen dauert diese Abfrage sehr lange oder läuft auf einen Time-Out.

Um diese Verhalten zu ändern muss in der Datei C:\inetpub\wwwroot\Director\web.config ein neuer Parameter Connector.ActiveDirectory.ForestSearch hinzugefügt und auf false gesetzt werden.

Import-Module WebAdministration
Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site/Director' -filter "appSettings" -name "." -value @{key='Connector.ActiveDirectory.ForestSearch';value='false'}

Soll der Director trotz der o.g. Thematik mehr als die aktuelle Domain durchsuchen, muss in der Datei C:\inetpub\wwwroot\Director\web.config ein neuer Parameter Connector.ActiveDirectory.Domains hinzugefügt und die entsprechenden Domains hinterlegt werden.

Import-Module WebAdministration
Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site/Director' -filter "appSettings" -name "." -value @{key='Connector.ActiveDirectory.Domains';value='<Domain-1>,<Domain-2>,<Domain-n>'}
Konfiguration: Ansichtsfilter

Innerhalb  des Citrix Directors lassen sich Filter für Ansichten setzen und auch für die Weiterverwendung abspeichern.

Custom Machine Filter für Machines mit aktivem Maintenance Mode
Custom Machine Filter für Machines mit aktivem Maintenance Mode

Standardmäßig werden die dazugehörtigen Daten in C:\Inetpub\wwwroot\Director\UserData abgelegt; jeder Director-Benutzer kann dabei seine eigenen Filter haben. Solange es in der Infrastruktur nur einen Director Server gibt, ist es kein Problem, wenn diese Daten lokal auf dem Server gespeichert sind. Anders verhält es sich, wenn z.B. 2 Director Server existieren, die loadgebalanced werden, da dann, jenachdem, auf welchem Server der Benutzer gerade verbunden ist, die Filter entweder da sind oder nicht, bzw. mehrfach angelegt werden müssen. Um dies zu umgehen, lässt sich der Speicherort für die Filter zentral auf ein Fileshare umkonfigurieren.

Hierzu legen wir auf Laufwerk C:\ eines File-Servers einen Ordner Director\UserSettings an und  den Root-Ordner Director als Director frei. Im Anschluss gibt man jedem Director-Server Computer-Objekt mindestens Modify-Rechte auf dem Ordner (in diesem Beispiel 2 Server).

New-Item -Path C:\Director -ItemType Directory -Force
New-Item -Path C:\Director\UserSettings -ItemType Directory -Force
New-SmbShare -Name "Director" -Path "C:\Director" -FullAccess "Everyone"
$ACLSV1 = Get-Acl "C:\Director"
$ARSV1 = New-Object System.Security.AccessControl.FileSystemAccessRule("<Domain>\<Director-Servername-1>$","Modify","ContainerInherit,ObjectInherit","None","Allow")
$ACLSV1.SetAccessRule($ARSV1) Set-Acl "C:\Director" $ACLSV1
$ACLSV2 = Get-Acl "C:\Director"
$ARSV2 = New-Object System.Security.AccessControl.FileSystemAccessRule("<Domain>\<Director-Servername-2>$","Modify","ContainerInherit,ObjectInherit","None","Allow")
$ACLSV2.SetAccessRule($ARSV2) Set-Acl "C:\Director" $ACLSV2

Im Anschluss muss auf jedem Director-Server der Pfad für die User Settings in den IIS Einstellungen angepasst werden:

Import-Module WebAdministration
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site/Director' -filter "appSettings/add[@key='Service.UserSettingsPath']" -name "value" -value "\\<FileServer-Name>\Director\UserSettings"

Quellen:
https://support.citrix.com/
https://www.carlstalhood.com/

Weiterführende Links:
https://support.citrix.com/article/CTX227936
https://support.citrix.com/article/CTX139896
https://support.citrix.com/article/CTX223907
https://support.citrix.com/article/CTX139382

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.