Windows Virtual Desktop gebruiken voor je on-premises VDI/RDS omgeving

DISCLAIMER: Deze blog laat zien wat er technisch mogelijk is met Windows Virtual Desktop. Microsoft heeft aangegeven dat het gebruik van Windows Virtual Desktop in combinatie met on-premises workloads in strijd is met haar licentievoorwaarden. Raadpleeg uw licentiespecialist voor meer informatie over de licensering van Windows Virtual Desktop.

In de vorige blog hebben Jan Bakker & Roel Everink je laten zien hoe je Windows Virtual Desktop kan installeren vanaf scratch.

In deze blogpost gaat Roel Everink een stapje verder. Hij kijkt hij wat er allemaal gebeurt tijdens de deployment en hoe je dat handmatig uitvoert bij een on-premises server, zodat de control plane van Windows Virtual Desktop wordt gebruikt om te verbinden met een on-premises server.

Dit heeft enkele voordelen:

  • Geen compute kosten in Azure
  • Connecten naar het eigen on-premises netwerk, zonder daarvoor inbound poorten te openen
  • RDSH servers on-premises met de veiligheid van Azure AD authenticatie, inclusief MFA / Conditional Access

Dit kan natuurlijk ook worden gebruikt om te verbinden met een management server / desktop bij jezelf thuis, zonder port forwarding aan te zetten op je thuis router.

Inhoudsopgave

  1. Requirements
  2. Toekennen van rechten aan de WVD back-end & client app
  3. TenantCreator rechten toewijzen aan gebruikers
  4. Hostpool aanmaken & gebruikers rechten geven
  5. Registratie token aanmaken
  6. Installeren & configureren van de Windows Virtual Desktop clients
    1. RDSH rol installeren (indien het een Server OS is)
    2. Windows Virtual Desktop Agent
    3. Windows Virtual Desktop Agent Bootloader
    4. Windows Virtual Desktop side-by-side stack installeren of activeren
      1. Server 2016
      2. Server 2019 & Windows 10 1809 (of hoger)
  7. Resultaat
  8. Errors
  9. Meer informatie

1. Requirements

Om dit uit te voeren zijn er de volgende requirements aan de omgeving:

  • Active Directory Domain Services
  • Een Azure tenant met gesynchroniseerde AD gebruikers middels Azure AD Connect
  • Een Azure subscription (subscription ID is nodig voor de hostpool creation, er hoeven geen resources in te staan)
  • Een domain joined (on-premises kan, maar hoeft niet) VM om aan de Windows Virtual Desktop omgeving toe te voegen

Als alle stappen in onze vorige blog zijn uitgevoerd, dan is dit allemaal al aanwezig, afgezien van de VM die we aan WVD willen toevoegen. De volgende 2 stappen die moeten worden uitgevoerd zijn:

  1. Toekennen van rechten aan de WVD back-end en client app.
  2. TenantCreator rechten toewijzen aan gebruikers. Dit is in onze vorige blog al behandeld, maar laat ik in deze blog even opnieuw zien.

2. Toekennen van rechten aan de WVD back-end en client app

Ga naar de website: https://rdweb.wvd.microsoft.com/ Selecteer hier eerst “Server App” en vul vervolgens het Tenant ID in. Wacht vervolgens 30 seconden en selecteer vervolgens: “Client App” met hetzelfde Tenant ID. De Tenant ID is te vinden op de volgende locatie: Azure Active Directory –> Properties –>Directory ID

3. TenantCreator rechten toewijzen aan gebruikers

Het aanmaken van de tenant gebeurt op de Server back-end, die we zojuist rechten hebben gegeven op onze Azure Tenant.

We moeten alleen nog wel een gebruiker (of service principal) deze rechten geven. Ga hiervoor in de Azure portal naar: Azure Active Directory –> Enterprise Application. In de lijst staan 2 applicaties: “Windows Virtual Desktop” & “Windows Virtual Desktop Client”. Deze zijn aangemaakt doordat we ze toegang hebben gegeven tot onze Tenant in de vorige stap. Klik op: “Windows Virtual Desktop” Ga vervolgens naar “Users and groups” en klik op: “Add user”. Bij role staat standaard al TenantCreator geselecteer. Selecteer één of meerdere gebruikers die de tenant gaat aanmaken. Klik vervolgens op “Assign

Tot zover waren de stappen hetzelfde als in de vorige blogpost. Wat we vervolgens hebben gedaan is in de Azure portal de wizard starten om een host pool aan te maken. Echter gaan we de stappen van de wizard nu zelf uitvoeren. Dat zijn de volgende zaken:

  1. Hostpool aanmaken & gebruikers rechten geven.
  2. Registratie token aanmaken.
  3. Installeren van de Windows Virtual Desktop Agents.

Slechts 3 stappen. De rest van de wizard was voornamelijk het uitrollen van een VM met de juiste settings en deze geautomatiseerd toevoegen aan het domain middels de domainjoin extensie. Echter hoeft de VM dus geen Azure VM te zijn, de agents maken simpelweg een outbound connectie naar de WVD control plane. Aan de slag dus maar!

4. Hostpool aanmaken & gebruikers rechten geven

Om de hostpool aan te maken moeten we gebruik maken van powershell.

Install-Module -Name Microsoft.RDInfra.RDPowerShell
Import-Module -Name Microsoft.RDInfra.RDPowerShell

#Setup variables, tenantName is de naam van onze WVD tenant, hostpool is de naam van onze nieuwe hostpool
$hostpool       = "Server2019 on-prem"
$tenantName     = "on-prem Windows Virtual Desktops"
$AadTenantId    = "214da8f2-c2d8-4f61-8e13-8dba0a4edaa2"
$subscriptionId = "f7e06285-03e5-4c9d-95cd-32d791b2563e"

#Login bij de WVD back-end
Add-RdsAccount -DeploymentUrl "https://rdbroker.wvd.microsoft.com"

#Aanmaken van de tenant (als deze nog niet bestaat)
$newRdsTenantSplat = @{
   AzureSubscriptionId = $subscriptionId
   AadTenantId         = $AadTenantId
   Name                = $tenantName
}
New-RdsTenant @newRdsTenantSplat

#Aanmaken van de hostpool
$newRdsHostPoolSplat = @{
   ValidationEnv = $false
   FriendlyName  = "Server 2019 on-prem"
   Name          = $hostpool
   TenantName    = $tenantName
}
New-RdsHostPool @newRdsHostPoolSplat 

In de code hierboven heb ik bij ValidationEnv aangegeven $false. Als dit op $true wordt gezet, betekent dit dat de VM agents binnen deze hostpool iets eerder updates krijgen. Dit is handig voor een test omgeving om de agent updates iets eerder te testen dan bij de productie omgeving. Bij het aanmaken van een hostpool wordt er ook een default app group aangemaakt met de naam: Desktop Application Group. Hier moeten we onze gebruikers nog rechten op geven met het volgende commando.

$addRdsAppGroupUserSplat = @{
   HostPoolName      = $hostpool   
   TenantName        = $tenantName
   AppGroupName      = "Desktop Application Group"
   UserPrincipalName = "roel@everink.it"
}
Add-RdsAppGroupUser @addRdsAppGroupUserSplat 

5. Registratie token aanmaken

Bij de installatie van de WVD agent moet er een token worden opgegeven waarmee de agent zich kan registreren bij je eigen specifieke tenant en hostpool binnen de WVD control plane. Deze token is dus specifiek voor een hostpool. Bij het aanmaken van een token is het verstandig om de lifetime niet al te hoog te zetten vanuit security oogpunt.

#RDS registration info
$newRdsRegistrationInfoSplat = @{
   HostPoolName    = $hostpool
   ExpirationHours = 2
   TenantName      = $tenantName
}
$RDSregInfo = New-RdsRegistrationInfo @newRdsRegistrationInfoSplat
$RDSregInfo.Token | Set-Clipboard 

Door het naar Set-Clipboard te pipen wordt het token direct naar het klembord gekopieerd. Indien het Token al bestaat, kan deze worden opgevraagd met het volgende commando:

Export-RdsRegistrationInfo -TenantName $tenantName -HostPoolName $hostpool | Select-Object -ExpandProperty Token | Set-Clipboard 

Het token moeten we nog even bewaren voor de volgende stap, waar we de agents gaan installeren.

6. Installeren & configureren van de Windows Virtual Desktop clients

Voor een correcte werking moeten we 3 verschillende zaken installeren:

  1. Indien het een Server OS is: De Remote Desktop Session Host (RDSH) rol installeren.
  2. Windows Virtual Desktop Agent.
  3. Windows Virtual Desktop Agent Bootloader.
  4. Windows Virtual Desktop side-by-side stack installeren of activeren.

6.1 RDSH rol installeren (indien het een Server OS is)

Via de GUI is dit niet handig, omdat we alleen de RDSH rol nodig hebben. En die GUI wil direct meer installeren. Daarom kan dit het beste via PowerShell met het volgende commando:

Install-WindowsFeature -Name "RDS-RD-Server"

6.2 Windows Virtual Desktop Agent

Download de agent via de volgende link: https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RWrmXv. Zorg ervoor dat de file wordt geunblocked. Ga hiervoor naar de eigenschappen van het bestand en selecteer het vinkje bij “Unblock” en klik op OK.

Installeer vervolgens de WVD Agent door op de .msi te dubbelklikken. Tijdens de installatie moet de token die we eerder hebben opgehaald worden ingevoerd.

Als je dit wilt automatiseren kan dat met het volgende commando:

$AgentInstaller = "C:\Temp\WVDagent.msi"
$RegistrationToken = "TOKEN HIER"

Start-Process -FilePath "msiexec.exe" -ArgumentList "/i $AgentInstaller", "/quiet", "/qn", "/norestart", "/passive", "REGISTRATIONTOKEN=$RegistrationToken", "/l* C:\Users\AgentInstall.txt" -Wait 

6.3 Windows Virtual Desktop Agent Bootloader

Installeer de WVD Agent Bootloader van de volgende locatie https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RWrxrH. Unblock het bestand weer en installeer de .msi

6.4 Windows Virtual Desktop side-by-side stack installeren of activeren

Voor Server 2016 moeten we hiervoor nog een client installeren. Voor Server 2019 of Windows 10 1809 of later moeten we een powershell script uitvoeren als administrator.

6.4.1 Server 2016

Download de agent van de volgende locatie: https://go.microsoft.com/fwlink/?linkid=2084270. Unblock het bestand, en installeer de .msi

6.4.2 Server 2019 & Windows 10 1809 (of hoger)

Download het powershell script van de volgende locatie: https://go.microsoft.com/fwlink/?linkid=2084268 Unblock het bestand en start vervolgens PowerShell als administrator. Om scripts uit te mogen voeren moet de execution policy binnen PowerShell minimaal RemoteSigned zijn. Dit is te controleren met het commando:

Get-ExecutionPolicy

Is de policy Restricted, voer dan het volgende commando uit:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Vervolgens kan het script worden uitgevoerd.

Bij de prompt, kies ervoor om het script eenmalig uit te voeren.

7. Resultaat

Als alles goed is gegaan kunnen we nu inloggen bij de broker service. Ga hiervoor naar de pagina:

https://rdweb.wvd.microsoft.com/webclient/index.html

En log in met de user die rechten heeft gekregen op de App Group.

Als we de full desktop selecteren kunnen we ingeloggen in de VM. In de afbeelding hieronder is dat een Server 2019 evaluation version, die op mijn thuis server draait op VMware.

8. Errors

Het kan zijn dat bij het inloggen een error tevoorschijn komt zoals deze:

Het meest waarschijnlijke probleem is dat de VM nog niet klaar is voor connections. Na het installeren van de agents en het aanmelden bij WVD worden de agents geupdate en nog enkele nieuwe geinstalleerd. Zolang de VM hiermee bezig is, is het niet mogelijk om aan te melden. Dat kan worden bekeken door de status op te vragen van de VM met het commando:

Get-RdsSessionHost -TenantName $tenantName -HostPoolName $hostpool

Zolang de status nog staat op Upgrading is het niet mogelijk om in te loggen. Wacht dan nog 15 minuten en probeer het vervolgens nog eens.

De status moet zijn: Available

9. Meer informatie

Meer weten over Windows Virtual Desktop, Azure of de cloud? Neem dan contact op met ResultaatGroep! Wil je ook werken bij ResultaatGroep? Bekijk dan onze vacatures.