Voilà, nous avons terminé l’installation et la configuration de notre infrastructure VDI de base. L’envie de tester tout ceci est de plus en plus forte, mais il reste encore quelques étapes primordiales avant de pouvoir observer le résultat de tous ces efforts et notamment l’installation et la configuration des différentes machines virtuelles qui seront utilisées en tant que bureaux virtuels par nos utilisateurs. Nous allons donc voir quels sont les points clés pour avoir des machines virtuelles fonctionnelles.
Il y a deux méthodes pour déployer nos bureaux virtuels:
-
Installer et préparer chaque bureau virtuel manuellement. Ce qui veut dire, vous l’aurez compris, que si on souhaite déployer 100 bureaux virtuels (en pools ou personnels, peu importe), je vais créer 100 machines virtuelles de A à Z indépendamment l’une de l’autre. Méthode peu efficace et qui sera donc vite mise de côté dès que l’infrastructure dépassera quelques machines virtuelles.
-
Etre un peu plus astucieux et utiliser différents outils qui vont nous permettre de ne configurer qu’une machine (dépersonnalisation avec sysprep) pour ensuite la dupliquer au besoin. Ce sera notamment très utile pour la mise en place de pools de bureaux virtuels conséquents.
Nous allons nous considérer astucieux et je vais donc vous montrer comment arriver à une machine prête à être dupliquée pour une utilisation dans VDI.
Installation d’une machine virtuelle
Commençons par créer le squelette de notre machine dans Hyper-V.
Dans mon cas, j’utilise Hyper-V Server 2008 R2 en tant que RD Virtualization Host, ce qui signifie que je n’ai pas de console Hyper-V directement sur ce serveur. J’ai donc installé la console Gestionnaire Hyper-V sur une autre machine pour gérer mon serveur RDVH à distance. Il suffit pour cela d’activer la fonctionnalité sur un Windows Server 2008 R2 ou bien d’installer les Remote Server Administration Tools sur Windows 7.
Une fois la console lancée et connectée au serveur RD Virtualization Host, il suffit de lancer la création d’une nouvelle machine virtuelle.
L’assistant de création vous demande de rentrer le nom de la machine virtuelle. Il est conseillé de mettre le nom pleinement qualifié de celle-ci surtout si elle est destinée à être un bureau virtuel personnel.

Ensuite l’assistant vous demande de spécifier à quel réseau sera connecté la machine virtuelle.

Concernant le disque virtuel, il en existe trois types différents:
-
Disque de taille fixe: c’est le type de disque qui apporte les meilleures performances, car la taille que vous spécifiez sera directement allouée et elle ne variera pas. Cependant, c’est la solution qui apporte aussi le moins de souplesse, car même si uniquement 10 Go sont utilisés dans la machine virtuelle et que vous avez défini le disque sur 30 Go, 30 Go seront quand même utilisés physiquement. Le fichier .vhd aura donc la taille que vous définissez dès la création. A noter qu’il est possible de l’agrandir ultérieurement.
-
Disque en extension dynamique: Ce type de disque est intéressant en terme d’utilisation de l’espace disque car uniquement l’espace utilisé par la machine virtuelle va être alloué et ce de façon dynamique, avec une limite maximum de taille. Cependant, les performances sont moins bonnes car le disque va grandir au fur et à mesure que la machine virtuelle consomme de l’espace disque. Le fichier VHD initial est très petit et va grossir au fur et à mesure que des données y sont écrites.
-
Disque différentiel: Cette solution est celle qui permet d’économiser le plus d’espace disque mais qui confère les moins bonnes performances. En effet, ce type de disque fonctionne en étant rattaché à un disque parent en lecture seule et qui peut être partagé entre plusieurs machines virtuelles, comme un disque système où la base est identique quelle que soit la machine. Toutes les modifications qui seront apportées à ce disque parent seront en fait écrites dans le disque différentiel ce qui permet d’économiser énormément d’espace car une grosse partie des données est commune. Du fait des très faibles performances, ce type de disque sera quasiment toujours écarté des environnements de production.
Dans mon cas, pour plus de simplicité, je choisis de créer le disque avec l’assistant, ce qui a pour but de créer un disque dynamique. Si j’avais voulu un disque fixe, il m’aurait fallu le créer au préalable avec l’assistant de création de disque puis l’attacher lors de la création de la machine virtuelle.

Maintenant, je monte directement le fichier .iso d’installation de Windows 7 pour installer l’OS directement au premier démarrage de ma machine virtuelle.

Il ne reste qu’à valider la création et la machine se retrouve dans la console Hyper-V, prête à être démarrée.

L’installation du système d’exploitation est classique. Installez donc le système client désiré (Windows XP, Windows Vista ou Windows 7) pour correspondre aux besoins des bureaux virtuels.
Configuration de la machine virtuelle
Une fois la machine virtuelle créé sur Hyper-V et le système d’exploitation installé sur celle-ci, il va falloir la configurer pour permettre l’accès à distance par les utilisateurs de l’infrastructure VDI.
-
La première chose à faire est d’installer les services d’intégration Hyper-V si vous utilisez Windows XP ou Windows Vista. Cela n’est pas nécessaire sur Windows 7 car ils sont déjà installés nativement.
-
Configurer le réseau de la machine virtuelle. Normalement, le mode DHCP est utilisé.
-
Joindre la machine à votre domaine Active Directory. Attention: si vous souhaitez dépersonnaliser avec sysprep, il ne faut pas que la machine soit intégrée à un domaine. Vous pouvez donc la joindre pour les phases de configuration mais il ne faudra pas oublier de la sortir du domaine avant d’exécuter sysprep.
-
Installez les mises à jour et les applications nécessaires sur la machine virtuelle.
Maintenant, il faut configurer la machine virtuelle pour les services de bureau à distance (Remote Desktop). Pour cela, il est possible d’utiliser un script PowerShell ou VB fournit par les équipes de Microsoft et qui s’occupera de toutes ces étapes automatiquement. Cela comprend:
-
Activation du bureau à distance
-
Ajout d’utilisateurs au groupes Utilisateurs du bureau à distance (Remote Desktop Users)
-
Activation de Remote Procedure Call (RPC) pour RDS
-
Ajout d’une exception dans le pare-feu Windows pour les services de bureau à distance (Remote Desktop Services)
-
Ajout d’une exception dans le pare-feu Windows pour la gestion à distance des services (Remote Service Management)
-
Ajout d’autorisations sur l’écouteur RDP-TCP (RDP-TCP listener) pour le serveur RD Virtualization Host
-
Redémarrage du service Services de Bureaux à distance
Voici les scripts fournis par Microsoft sur son Script Center:
Cependant, pour comprendre les différentes étapes de configuration, je vais vous les détailler manuellement.
-
Il faut tout d’abord commencer par activer le “Bureau à distance” (Remote Desktop) sur la machine virtuelle. Pour cela, faites un clic droit sur Ordinateur et sélectionnez Propriétés. Dans la fenêtre Système , dans la partie gauche, cliquez sur le lien Paramètres d’utilisation à distance. Dans la section Bureau à distance des Propriétés Système, sélectionnez une des deux options suivantes:
- Autoriser les connexions depuis des ordinateurs exécutant n’importe quelle version du Bureau à distance (moins sécurisé): Utilisez cette option si vous avez des clients Windows XP qui n’ont pas au minimum la version 6.1 du client Bureau à distance (RDC).
- Autoriser uniquement les connexions provenant d’ordinateurs exécutant Bureau à distance avec authentification réseau: Dans la mesure du possible, utilisez cette option car elle fournit plus de sécurité grâce au protocole NLA (Network Level Authentication).
-
Ensuite, il faut ajouter des utilisateurs au groupe local Utilisateurs du bureau à distance de la machine virtuelle. Pour cela cliquez sur le menu Démarrer, puis Panneau de configuration. Sélectionnez Système et sécurité, puis Outils d’administration et enfin Gestion de l’ordinateur. Allez dans l’outil Utilisateurs et groupes locaux, puis sélectionnez Groupes et enfin double cliquez sur le groupe Utilisateurs du bureau à distance puis sélectionnez l’onglet Membres.
Ajoutez le ou les groupes auxquels vous souhaitez donner accès. Dans mon cas, j’ai créé un groupe “VDI Users” dans mon domaine Active Directory. Pour les bureaux virtuels personnels, il est encore mieux de ne mettre que le compte de l’utilisateur qui se verra attribué la machine pour plus de sécurité et s’assurer qu’aucun autre utilisateur ne puisse ouvrir le bureau virtuel par un moyen détourné.

-
Ensuite, il nous faut autoriser RPC pour RDS. Pour cela, il nous faut modifier une clé de registre. ATTENTION: une mauvaise manipulation sur le registre peut avoir des conséquences gênantes. Soyez prudents! Cliquez sur le menu Démarrer, puis dans la barre de recherche, tapez regedit.exe et appuyez sur Entree.
Dans l’éditeur de registre, naviguez jusqu’à HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer.
Double-cliquez sur la clé AllowRemoteRPC, entrez la valeur 1 dans le champ et cliquez sur OK pour valider.
Fermez l’éditeur de registre.

-
Maintenant, il nous faut configurer les exceptions dans le pare-feu Windows pour autoriser la gestion à distance et la connexion en bureau à distance. Pour cela, dans le menu Démarrer, tapez pare-feu et vous devriez avoir dans les résultats la console Pare-feu Windows avec fonctionnalités avancées.
Dans la console, faites un clic-droit sur Entrant dans la partie gauche puis sélectionnez Nouvelle règle.
Dans le type de règle, choisissez Prédéfini et sélectionnez Bureau à distance (Remote Desktop) dans la liste.
Validez la création de la règle et répétez la même chose pour la règle prédéfinie Gestion des services à distance (Remote Service Management).

-
Pour finir, il nous faut fournir des autorisations au compte d’ordinateur du serveur RD Virtualization Host (SRV-RDVH01 dans mon infrastructure) sur le protocole RDP de la machine virtuelle (VDI-PVDSE01) puis redémarrer les services bureau à distance pour prendre en compte les modifications.
Le serveur RD Virtualization Host a besoin des autorisations WINSTATION_QUERY, WINSTATION_LOGOFF et WINSTATION_DISCONNECT sur le bureau virtuel.
Pour cela, sur Windows 7 et Windows Vista, dans le menu Démarrer, tapez cmd dans la barre de recherche, faites un clic droit sur le résultat cmd.exe et cliquez sur Exécutez en tant qu’administrateur.
Exécutez les commandes suivantes en remplaçant NOMDOMAINE par votre nom de domaine (ROMAINLACOUR dans ma configuration) et NOMSERVEUR par le nom du serveur RD Virtualization Host (SRV-RDVH01 pour moi, ATTENTION à laisser le $ à la fin du nom du serveur dans les différents commandes où il est présent):
wmic /node:localhost RDPERMISSIONS where TerminalName="RDP-Tcp" CALL AddAccount "NOMDOMAINE\NOMSERVEUR$",1
wmic /node:localhost RDACCOUNT where "(TerminalName='RDP-Tcp' or TerminalName='Console') and AccountName='NOMDOMAINE\\NOMSERVEUR$'" CALL ModifyPermissions 0,1
wmic /node:localhost RDACCOUNT where "(TerminalName='RDP-Tcp' or TerminalName='Console') and AccountName='NOMDOMAINE\\NOMSERVEUR$'" CALL ModifyPermissions 2,1
wmic /node:localhost RDACCOUNT where "(TerminalName='RDP-Tcp' or TerminalName='Console') and AccountName='NOMDOMAINE\\NOMSERVEUR$'" CALL ModifyPermissions 9,1
Net stop termservice
Net start termservice

Pour Windows XP, ces commandes ne fonctionnent pas. Le plus simple reste donc de configurer Windows XP avec le script complet en Windows PowerShell fournit par Microsoft. Sinon il y a aussi un script VBS fournit par systemcenterideas.com qui permet de réaliser l’opération.
set objWMI = GetObject("winmgmts:\\.\root\cimv2")
set colItems = objWMI.ExecQuery("Select * from Win32_TSPermissionsSetting")
for each objItem in colItems
intRC = objItem.AddAccount("%NOMDOMAINE%\%NOMSERVEUR%", 1)
if intRC then
WScript.Echo "Error adding " & strAccount & " to " & _
objItem.TerminalName
else
WScript.Echo "Successfully added " & strAccount & " to " & _
objItem.TerminalName
end if
nextset objWMI = GetObject("winmgmts:\\.\root\cimv2")
set colItems = objWMI.ExecQuery ("Select * from Win32_TSAccount Where AccountName='%NOMDOMAINE%\\%NOMSERVEUR%'")
for each objItem in colItems
intRC = objItem.ModifyPermissions(0,True)
intRC = objItem.ModifyPermissions(2,True)
intRC = objItem.ModifyPermissions(9,True)
if intRC then
WScript.Echo "Error setting permissions for " & strAccount
else
WScript.Echo "Set permissions for " & strAccount
end if
next
Il suffit de copier ce bout de code dans un fichier .vbs, de remplacer les occurrences de %NOMDOMAINE% et %NOMSERVEUR% par votre nom de domaine et le nom du serveur RD Virtualization Host (ROMAINLACOUR et SRV-RDVH01 dans ma configuration) puis de l’exécuter sur le bureau virtuel Windows XP. N’oubliez pas de redémarrer le service Bureau à distance après l’opération.
La configuration de notre bureau virtuel initial est terminé. Maintenant, il va nous falloir le dépersonnaliser avec sysprep, pour pouvoir le dupliquer et faciliter le déploiement de nouveaux bureaux virtuels avec la même base.
Dépersonnalisation avec SYSPREP
L’utilisation de l’outil Sysprep va nous permettre de dépersonnaliser cette installation de Windows (génération d’un nouveau SID, changement du nom de la machine….) pour qu’on puisse la dupliquer sans problème. Une fois cette étape réalisée et la machine virtuelle arrêtée, il nous suffira de copier le .vhd de celle-ci quelque part sur un partage et de le dupliquer dès que l’on aura besoin de créer un nouveau bureau virtuel.
Il est intéressant de fournir un fichier de réponse à Sysprep pour qu’un certain nombre de paramètres soit automatiquement configurés au redémarrage de la machine “sysprépée”. Si vous n’en n’utilisez pas, toutes les questions du premier démarrage vous seront demandées par le système, comme l’acceptation des termes de la licence, la clé de licence, un nom d’utilisateur et un mot de passe et d’autres. En fonction du système d’exploitation, les fichiers de réponse varient et je ne détaillerai pas cette partie dans ce billet. Sachez cependant que le Windows Automated Installation Kit (WAIK) peut grandement vous aider à créer vos fichiers de réponse, notamment pour Windows Vista ou Windows 7.
ATTENTION: Avant d’exécuter Sysprep, votre machine doit être sortie de votre domaine Active Directory.
Dans mon cas, je me suis créé un fichier de réponse (unattend.xml) qui me permettra de ne spécifier que le nom de la machine à la création d’un nouveau bureau virtuel. Je l’ai copié dans le répertoire C:\Windows\System32\sysprep de ma machine virtuelle Windows 7 et il ne me reste plus qu’à exécuter la commande suivante:
sysprep /generalize /oobe /shutdown /unattend:unattend.xml
Une fois le sysprep terminé, la machine est automatiquement éteinte. Il vous suffit de copier le fichier .vhd sur un partage ou ailleurs pour en faire une sauvegarde ou alors d’utiliser des outils de capture (MDT, WDS etc…) pour en créer une image “déployable”.
Lors que vous aurez besoin d’un nouveau bureau virtuel (dans un pool ou personnel), il vous suffira de faire une nouvelle copie de ce VHD et de l’attacher à une nouvelle machine virtuelle lors de la création. Au démarrage, elle sera reconfigurée correctement et vous serez certain d’avoir des machines différentes.
Voici le résultat obtenu au démarrage d’une machine dupliquée avec cette méthode: seul le nom de l’ordinateur est demandé.

Une fois redémarré, il ne vous reste plus qu’à intégrer ce nouveau bureau virtuel à votre domaine Active Directory, si vous ne l’avez pas fais automatiquement dans votre fichier de réponse ou d’une quelconque autre manière.
Maintenant, vous avez tout ce qu’il faut pour créer votre flotte de bureaux virtuels. Je vous expliquerai dans de prochains billets comment créer les pools de bureaux virtuels ou comment affecter des bureaux virtuels personnels à des utilisateurs et vous serez enfin en mesure de tester votre infrastructure VDI.