VDI : 4 Creation de la machine virtuelle

4.1 Création de la machine virtuelle

Lors de l’élaboration des machines virtuelles, vous devez d’abord créer la machine sur la console Hyper-V. Lors de cette création vous devez lui donner un nom.

Conseil : Si vous souhaitez utiliser le mode VDI Bureaux virtuels personnels, entrez le nom de domaine pleinement qualifié de la machine comme nom de machine virtuelle.

Vous devez ensuite spécifier la mémoire allouée à la machine. Pour cela, je vous renvoie vers les recommandations de Microsoft. Ces recommandations sont à adapter en fonction de du scénario d’utilisation de la machine virtuelle. Si vous mettez à disposition des applications riches, il est conseillé d’allouer autant de mémoire que vous le feriez pour une machine physique.

Sur la configuration réseau, assurez-vous que la machine virtuelle soit en contact avec le reste de l’infrastructure incluant les clients, le serveur RD Connexion Broker, et le serveur RD Session Host.

Pour la configuration du disque vous pouvez adopter plusieurs stratégies :

  • Attacher un disque virtuel de taille fixe : Cette solution est de loin la plus performante en matière d’I/O disque. Elle est cependant peu flexible puisque la taille est fixe et prise dès la création du disque. Ainsi une machine virtuelle n’utilisant que 3 GB d’un disque VHD de taille fixe 15 GB prendra bien la taille correspondante sur le disque dur de la machine. Notez qu’il est possible d’étendre manuellement le disque virtuel.
  • Attacher un disque virtuel de taille dynamique, offre une solution flexible permettant d’assurer une marge à la machine virtuelle en terme d’espace disque offert. Ainsi, vous pouvez définir un disque de 50 GB pour une machine qui n’en utilisera pas plus de 30. 20 GB d’espace disque seront disponibles si nécessaire sans pour autant les allouer. Les disques virtuels dynamiques offrent cependant des performances d’entrées/sorties moins importantes que pour le disque de taille fixe. Certains experts déconseillent l’utilisation de ces disques pour des machines fortement sollicitées en environnement de production.
  • Enfin la dernière solution permet d’économiser beaucoup d’espace disque. Le principe permet d’utiliser un disque différentiel. Ceci permet d’utiliser un disque virtuel en lecture seule comme base (ou parent) d’un ensemble de machines virtuelles et de répercuter les modifications opérées sur le disque à un autre disque virtuel appelé disque différentiel. Le disque parent reste ainsi intact. Comme les fichiers du système d’exploitation restent communs à l’ensemble des machines ceci permet d’économiser un nombre significatif d’espace de stockage qui grossit exponentiellement en fonction du nombre de machines virtuelles utilisant un même disque. Si 5 machines utilisent un même disque de 3GB, c’est 12 GB d’économiser sur les deux autres scénarios. Cette méthode propose les moins bonnes performances I/O. Elle est donc dépréciée dans des environnements de production.

Une fois la machine virtuelle prête, installez le système d’exploitation souhaité par les différents moyens qui vous sont offerts (en utilisant le média d’installation, en utilisant une méthode de déploiement PXE…)

 4.2 Configuration des machines VDIs

L’utilisation de Microsoft VDI nécessite la configuration des machines virtuelles afin de permettre leurs accès aux utilisateurs.

 

  • Commencez déjà par installer les composants additionnels d’Hyper-V si vous mettez en place des machines Windows XP et Windows Vista.
  • Joignez le domaine Active Directory de votre entreprise. Notez que si vous souhaitez syspréper la machine et l’utiliser comme modèle pour d’autres machines, celle-ci ne doit pas être jointe au domaine. Vous pouvez la joindre pour opérer les différentes configurations puis la retirer du domaine pour la syspreper.
  • Installez les différentes mises à jour de sécurité relative à la politique de votre entreprise.
  • Importez ensuite le certificat SSL du serveur Remote Desktop Web Access précédemment exporté. Pour cela ouvrez la console d’administration de Microsoft (MMC) et chargez le composant « Certificates » pour l’ordinateur local. Vous pouvez aussi utiliser la commande « certmgr.msc ». Ouvrez l’arborescence « Certificates => Trusted Root Certification Authority => Certificates ». Cliquez droit et sélectionnez « All Tasks => Import … ». Importez le certificat en suivant l’assistant :

 

 

  • Activer ensuite la fonctionnalité de Bureau à distance. Cliquez sur le menu Démarrer et ouvrez le Panneau de Configuration. Ouvrez « Système » et dans le menu de gauche, sélectionnez « Paramètres d’utilisation à distance ». Sélectionnez :
    • « Autoriser les connexions des ordinateurs exécutant n’importe quelle version de Bureau à distance » pour autoriser toute personne utilisant une version quelconque de Bureau à distance (RDC) à se connecter à votre ordinateur. Ceci est à sélectionner si des ordinateurs Windows XP doivent se connecter à la machine et qu’ils ne disposent pas du client RDC 6.1.
    • « Autoriser uniquement les connexions provenant d’ordinateurs exécutant Bureau à distance avec authentification réseau »pour autoriser toute personne dont l’ordinateur exécute des versions de Bureau à distance avec authentification réseau (RDC 6.1 ou plus) à se connecter à votre ordinateur. Cette option est plus sécurisée que la précédente puisqu’elle utilise NLA.

 

 

  • Activation de Remote Procedure Call (RPC) pour RDS. Ouvrez la base de registre en exécutant la commande « regedit ». Naviguez dans l’arborescence « HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer ». Ajoutez ou modifiez l’entrée de registre « AllowRemoteRPC » de type DWORD et placez la valeur à 1.

 

 

  • Ajoutez des exceptions au firewall pour permettre la prise de contrôle de la machine. Pour cela sur Windows 7 et Windows Vista, ouvrez le panneau de configuration de la machine et sélectionnez « Outil d’administration ». Ouvrez le « Pare-feu Windows avec fonctions avancées de sécurité »ou « Windows Firewall with Advanced Security ». Ajoutez une règle entrante prédéfinie « Remote Service Management » :Confirmez les règles crées :

    Puis définissez l’action « Allow the connection » :

    Ajoutez aussi une règle entrante prédéfinie « Remote Desktop » avec une action « Allow the connection » :

    Pour Windows XP, passez par le panneau de configuration et la fenêtre « Pare-feu Windows ». Autorisez les connexions Remote Desktop. Pour activer l’exception pour « Remote Service Management » communément appelé « Remote Administration », ouvrez une invite de commande et tapez la ligne de commande « netsh firewall set service type = remoteadmin mode = enable »Note : Vous pouvez aussi définir la majorité de ces paramètres par GPO.

 

 

  • Ajoutez ensuite les utilisateurs ou groupes d’utilisateurs autorisés à se connecter en bureau à distance au groupe local « Remote Desktop Users » de la machine virtuelle. Pour cela, ouvrez le panneau de configuration de la machine et sélectionnez « Outil d’administration » puis « Computer Management ». Dans la colonne de gauche, parcourez l’arborescence « Computer Management => System Tools => Local Users and Groups => Groups ». Ouvrez les propriétés du groupe de sécurité local « Remote Desktop Users ». Ajoutez les utilisateurs ou groupes d’utilisateurs autorisés à se connecter aux machines. Dans le cadre de mon organisation, j’ai défini deux groupes « External Users Group » et « WindowsTouch Users Group » :
  • Enfin, nous devons ajouter les permissions pour le protocole RDP au compte ordinateur du serveur Remote Desktop Virtualization Host. Il nécessite les permissions « WINSTATION_QUERY », « WINSTATION_LOGOFF », et « WINSTATION_DISCONNECT ». Ces permissions lui permettent de contrôler l’état de la machine. Pour cela sur Windows Vista et Windows 7, exécutez les lignes de commande suivantes :« wmic /node:localhost RDPERMISSIONS where TerminalName= »RDP-Tcp » CALL AddAccount « contoso\rdvh-srv$ »,1 »« wmic /node:localhost RDACCOUNT where « (TerminalName=’;RDP-Tcp’; or TerminalName=’;Console’;) and AccountName=’;<NOM_DE_DOMAINE>\\<NOM_DU_SERVEUR_RDSVH>$’; » CALL ModifyPermissions 0,1 »

    « wmic /node:localhost RDACCOUNT where « (TerminalName=’;RDP-Tcp’; or TerminalName=’;Console’;) and AccountName=<NOM_DE_DOMAINE>\\<NOM_DU_SERVEUR_RDSVH>$’; » CALL ModifyPermissions 2,1 »

    « wmic /node:localhost RDACCOUNT where « (TerminalName=’;RDP-Tcp’; or TerminalName=’;Console’;) and AccountName=<NOM_DE_DOMAINE>\\<NOM_DU_SERVEUR_RDSVH>$’; » CALL ModifyPermissions 9,1 »

    Où <NOM_DE_DOMAINE> correspond au nom de domaine (exemple : WINDOWSTOUCH) et <NOM_DU_SERVEUR_RDSVH> doit être remplacé par le nom d’hôte du serveur hébergeant le rôle Remote Desktop Virtualization Host (exemple : dans mon cas JS-PC-SERVER)

    Sur Windows XP, l’alias RDACCOUNT n’est pas connu. Vous devez donc utiliser le script VBS suivant :

     set objWMI = GetObject(« winmgmts:\\.\root\cimv2 »)

    set colItems = objWMI.ExecQuery(« Select * from Win32_TSPermissionsSetting »)

    for each objItem in colItems

    intRC = objItem.AddAccount(« %DOMAIN% \%ACCOUNT%« , 1)

    if intRC then

    WScript.Echo « Error adding  » & strAccount &  » to  » & _

    objItem.TerminalName

    else

    WScript.Echo « Successfully added  » & strAccount &  » to  » & _

    objItem.TerminalName

    end if

    next

    set objWMI = GetObject(« winmgmts:\\.\root\cimv2 »)

    set colItems = objWMI.ExecQuery (« Select * from Win32_TSAccount Where AccountName=’;%DOMAIN%\\%ACCOUNT%’; »)

    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 ainsi de remplacer %DOMAIN% par votre nom de domaine et %ACCOUNT% par le nom de la machine qui héberge le service Remote Desktop Virtualization Host. Redémarrez ensuite le service Remote Desktop en utilisant les commandes :

 

 

  • Vous pouvez ensuite installer les différentes applications que vous souhaitez mettre à disposition de l’utilisateur. Dans mon cas, j’installe Office 95 sur les machines Windows XP et Office 2010 sur les machines virtuelles Windows 7.

 

La configuration de la machine virtuelle est entièrement faite, vous pouvez l’éteindre ou la syspréper pour s’en servir de modèle. N’oubliez pas que vous devez retirer la machine du domaine avant de la syspréper. Vous pouvez ensuite copiez le VHD dans un répertoire de sauvegarde ou alors capturer la machine sous la forme d’une image Wim déployable par un système de déploiement de système d’exploitation comme Windows Deployment Services et System Center Configuration Manager.

 4.3 Configuration automatique des machines VDIs

Il est possible d’automatiser l’ensemble des tâches de configuration du système d’exploitation de la machine virtuelle en utilisant un script créé par les équipes de Microsoft. Vous devez tout de même installer le système d’exploitation, le joindre au domaine, installer les différentes mises à jour de sécurité, et importer le certificat du serveur Remote Desktop Web Access.

Microsoft met à disposition son script dans deux langages :

Ces scripts permettent de configurer (firewall, permissions RDP, activation de Remote Desktop, activation de RPC …) une machine cible en spécifiant son nom et les identifiants d’accès.

 4.4 Activation de la fonctionnalité Rollback

Une fonctionnalité intéressante de Microsoft VDI permet de restaurer les machines virtuelles mises à disposition des utilisateurs dans un état spécifique défini par l’administrateur. Cette fonctionnalité prend tout son sens dans le scénario de mise à disposition d’un pool de bureaux virtuels. En effet, dans ce cas précis, l’administrateur souhaite que les machines virtuelles restent semblables. Il est primordial de pouvoir s’assurer que toutes les opérations (création de documents …) effectuées par un utilisateur, ne seront pas disponibles lors de la connexion d’un autre utilisateur après la déconnexion du précédent.

Pour cela, après avoir opérer l’ensemble des configurations des machines virtuelles (installation d’applications, configuration pour VDI …), ouvrez la console d’administration Hyper-V. Cliquez droit sur la machine virtuelle cible et sélectionnez « Snapshot ». Le Snapshot permet de créer un cliché de l’état (configuration, mémoire …) de la machine virtuelle à un instant donné.Dans le sous panneau central, cliquez droit sur Snapshot précédemment créé et renommez-le « RDV_Rollback » :

Attention : Vous êtes obligé d’utiliser le nom RDV_Rollback pour que le mécanisme automatique du serveur Remote Desktop Virtualization Hostfonctionne.

Ainsi dans la pratique, une fois que l’utilisateur aura terminé ses opérations et qu’il se sera déconnecté de la session bureau à distance, le serveur Remote Desktop Virtualization Host appliquera ce snapshot afin de remettre la machine virtuelle dans son état avant la connexion de l’utilisateur.

 4.5 Automatisation de la création des machines virtuelles

Derrière la notion de VDI, il y a d’importants processus à mettre en œuvre et la gestion d’un parc de bureaux virtuels de plus de 100 machines peut vite devenir fastidieuse. Ainsi la simple opération de mettre à disposition une machine virtuelle disponible au travers d’un pool de bureaux virtuels ou d’un bureau virtuel personnel nécessite l’accès à la console d’administration Hyper-V du serveur sur lequel on souhaite créer la machine. Il est ensuite nécessaire de dérouler les différents assistants de création. Ces longues étapes ne représentent pas grand-chose quand il s’agit de provisionner une machine mais ceci devient différent quand on doit le faire pour 50 machines sur 5 serveurs différents. Pour cela, Microsoft offre différents outils d’administration comme System Center Virtual Machine Manager.

 4.5.1 Utilisation d’un script de création automatique

La première étape d’optimisation est l’utilisation d’un script permettant d’opérer simplement les tâches que l’on ferait au travers d’une interface graphique comme l’assistant de création d’une machine virtuelle Hyper-V. L’équipe Remote Desktop a donc mis à disposition un script permettant de créer une machine virtuelle pour l’infrastructure VDI.

Avant d’ajouter la machine, vous devez disposer d’un disque virtuel (VHD) sysprépé et configuré pour VDI comme spécifié précédemment.

Accéder au script Powershell « Create virtual machines for VDI » : https://gallery.technet.microsoft.com/ScriptCenter/en-us/904bd2c8-099d-4f27-83da-95f5536233bc

Vous pouvez ensuite utiliser le script avec les commutateurs suivants : Create-Virtualmachine.ps1 -UserFile <String> -VHDTemplate <String> -OSVersion <String> -Pool <String> -VMCount <UInt32> -AdminPassword <String> -DomainJoinUsername <String> -DomainJoinPassword <String> [-MemorySize <UInt32>] [-NICNetwork <String>] [-VHDDestinationMapFile <String>] [-MachineNameFormat <String>] [-ProductKey <String>] [-HyperVServer <String[]>] [-SharedLogPath <String>] [-Inquire] [-Credential <PSCredential>] [<CommonParameters>]

 4.5.2 Gestion avec System Center Virtual Machine Manager 2008 R2

Le but de cette partie n’est pas de vous présenter System Center Virtual Machine Manager (SCVMM) 2008 R2 mais de vous montrer comment utiliser cet outil pour administrer une solution VDI. Par-delà ses fonctionnalités permettant de manager les différents hôtes et machines virtuelles de l’environnement, il offre aussi un portail en libre-service à destination des utilisateurs. Ce portail est en adéquation directe avec la notion de pool VDI. Nous ne détaillerons pas l’installation du produit et de sa console. Je vous rappelle les pré requis d’installation :

Configuration logicielle requise Remarques Windows PowerShell 1.0 ou 2.0 S’il a été supprimé de ce dernier, l’Assistant Installation l’ajoute automatiquement. Windows Remote Management 1.1 ou 2.0 Microsoft .NET Framework 3.0 ou 3.0 SP1 S’il a été supprimé, l’Assistant Installation de VMM 2008 l’ajoute automatiquement. Windows AIK 1.1 Si ce logiciel n’a pas déjà été installé, l’Assistant Installation l’installe automatiquement. Microsoft SQL Server https://technet.microsoft.com/fr-fr/library/cc764220.aspx

Pour cela, je vous renvoie vers la documentation de Microsoft : https://technet.microsoft.com/fr-fr/library/cc917964.aspx

Une fois le serveur VMM installé, ouvrez la console d’administration et ajoutez les différents hôtes Hyper-V à la console.

Ajout d’un modèle de machine virtuelle

Nous allons commencer par ajouter un modèle de machine virtuelle. Pour cela, cliquez sur la partie « Library » et ajoutez un profil de matériel en cliquant sur « New Hardware Profile »

Une fois l’assistant ouvert, entrez le nom du profil et le propriétaire. Puis ouvrez l’onglet « Hardware Settings ». Dans cet onglet, configurez la partie matérielle pour la création d’une machine virtuelle de type VDI. Entrez la mémoire, la carte réseau et le réseau nécessaire :

Une fois le profil matériel créé, cliquez sur « New Template » pour lancer la création d’un modèle de machine virtuelle.

Sur l’écran « Select Source », sélectionnez un disque VHD contenu dans la librairie (celui-ci doit être sysprépé) ou une machine virtuelle sur un hôte Hyper-V.

Attention : La machine virtuelle qui est utilisée pour créer le modèle, sera automatiquement détruite. SCVMM conseille de créer un clone de la machine avant de commencer la création.

A l’étape « Template Identity », entrez le nom du modèle, le propriétaire et une description :

Sur la page « Configure Hardware », sélectionnez le profil matériel précédemment créé.

Sur la page « Guest Operating System », entrez les informations d’identification, le mot de passe administrateur local, la clé produit, la zone de temps, le système d’exploitation de la machine, les informations de connexion à un domaine ou à un workgroup :

Enfin sélectionnez la librairie et le chemin de stockage du modèle :

Validez le résumé et lancez la création.

Installation du portail en libre-service

Vous devez commencer par installer les pré requis suivants :

  • Pour Windows Server 2003, vous devez ajouter le composant Windows Server IIS 6.0.
  • Pour Windows Server 2008 ou 2008 R2, vous devez ajouter le rôle Serveur Web (IIS), puis installer les services de rôle serveur suivants :
    • Compatibilité avec la méta base de données IIS 6
    • Compatibilité WMI d’IIS 6
    • Contenu statique
    • Document par défaut
    • Exploration de répertoire
    • Erreurs HTTP
    • ASP.NET
    • Extensibilité .NET
    • Extensions ISAPI
    • Filtres ISAPI
    • Filtrage des demandes

Ouvrez ensuite l’installeur de System Center Virtual Machine Manager 2008 R2 et sélectionnez « VMM Self-Service Portal » :

Passez les étapes de vérification des pré requis et spécifiez le chemin d’installation :

Paramétrez les informations liées au serveur Web (Nom du serveur VMM, port de communication, port de communication avec IIS…) :

Confirmez le résumé pour lancer l’installation. Une fois l’installation terminée, vérifiez que tout a eu lieu avec succès :

Création des rôles d’accès au portail

L’étape qui suit permet de créer les autorisations nécessaires d’accès au portail en libre-service. Ceci va permettre de créer plusieurs niveaux d’authentification allant du niveau d’administration, d’administration déléguée, ou utilisateurs en libre-service. Ouvrez la console d’administration de SCVMM et cliquez sur la partie « Administration ». Choisissez ensuite d’ouvrir le nœud « User Role » et cliquez sur « New user role » :

Entrez le nom du rôle utilisateur et sélectionnez le profil adéquat. Dans notre cas, nous souhaitons donner l’accès aux utilisateurs VDI à un portail d’accès leur permettant de créer une machine virtuelle, sélectionnez donc « Self-Service User » :

Sur la page suivante, ajoutez les membres et groupes que vous souhaitez associer à ce rôle :

Sur la page « Select Scope », sélectionnez les groupes d’hôte sur lesquels les machines virtuelles des utilisateurs seront déployées :

Sur l’écran « Virtual Machine Permissions », sélectionnez les actions que vous souhaitez rendre disponible aux utilisateurs (Démarrer, Arrêter, Eteindre, Mettre en pause et résumer, créer et gérer des checkpoints, supprimer la machine, la connexion à distance, Donner les droits d’administrateur local) :

A l’étape « Virtual Machine Creation Settings », sélectionnez “Allow users to create a new virtual machines” pour permettre aux utilisateurs de créer eux même des machines virtuelles. Vous pouvez ajouter des modèles par rapport à ceux que vous avez créés. Enfin vous pouvez définir un quota afin de limiter la création. Le quota peut être commun à tous les utilisateurs faisant parti du rôle ou alors attribué à chacun des utilisateurs :

Enfin, sélectionnez « Allow users to store virtual machines in a library » pour stocker les machines virtuelles de l’utilisateur dans la librairie SCVMM.

Sur l’écran « Summary » , cliquez sur « Create » pour lancer le script Powershell et créer le rôle.

Expérimentation du portail en libre-service

Accédez à l’adresse Internet du serveur hébergeant le portail System Center Virtual Machine Manager. Connectez-vous à l’aide des identifiants d’un des utilisateurs appartenant au rôle (Self-Service Users) défini plus tôt :

Une fois le portail chargé, cliquez sur « Nouvel Ordinateur ». La fenêtre de création s’ouvre, sélectionnez le modèle. Entrez les informations nécessaires comme le nom de l’ordinateur, le nom de la machine virtuelle, le mot de passe administrateur ou la clé produit. On peut aussi observer sur cette fenêtre le nombre de machines virtuelles disponibles en fonction du quota défini à l’utilisateur.

Une fois les informations entrées, cliquez sur « Créer » pour initier la création.

Une fois la création terminée (cette opération peut prendre plusieurs minutes), l’utilisateur peut démarrer la machine et opérer les différentes actions nécessaires à son utilisation :

Le but de cette partie était de vous présenter les différents moyens nécessaires à la création d’une machine virtuelle de manière plus ou moins automatique. L’utilisation du portail en libre-service de System Center Virtual Machine Manager est une bonne technologie puisqu’elle laisse la main à l’utilisateur ou aux opérateurs. On peut cependant regretter que VDI ne soit pas aussi bien intégré à la technologie. En effet une fois la machine virtuelle créée, celle-ci est associée à l’utilisateur dans SCVMM mais pas dans Active Directory et dans l’environnement VDI. Ainsi la machine virtuelle n’est pas réellement intégrée dans l’environnement VDI, ni associée comme bureau virtuel personnel de l’utilisateur (Il en est de même pour les pools de machines virtuelles).