ra2 studio - stock.adobe.com

Administration : automatisez le démarrage des VM Hyper-V avec PowerShell

Cet article explique comment créer des modèles de machines virtuelles afin de pouvoir démarrer automatiquement des VM Hyper-V à partir de scripts PowerShell.

La capacité à déployer de nouvelles machines virtuelles rapidement et efficacement est essentielle en administration IT. L’automatisation via PowerShell ajoute de la flexibilité et de la rapidité au processus.

Comme la plupart des hyperviseurs, Hyper-V permet à l’administrateur de créer des modèles qui peuvent être utilisés pour déployer de nouvelles machines virtuelles selon les besoins. Les modèles assurent la cohérence et garantissent que chaque VM répond à des critères. La scénarisation du déploiement à l’aide de PowerShell rend le processus encore plus facile. Avec un script et un modèle de disque, l’administrateur peut déployer une VM avec une mémoire, un processeur ou même un espace disque personnalisés.

L’utilisation conjointe de modèles et de l’automatisation à l’aide de PowerShell permet de gagner du temps et de maintenir la cohérence. Cela offre la possibilité d’éviter les différences de configuration et les erreurs qui ont tendance à se glisser, lorsque quelqu’un saisit manuellement les informations de configuration.

Comment préparer un modèle pour les déploiements automatisés d’Hyper-V ?

Pour commencer, installez les cmdlets Hyper-V à l’aide de la commande PowerShell suivante, exécutée en tant qu’administrateur :

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

Ensuite, préparez la VM qui servira de modèle en gardant à l’esprit les critères suivants :

- N’incluez que les logiciels nécessaires dans le déploiement de l’image de base. Les paquets supplémentaires introduisent de la complexité, une taille supplémentaire et des problèmes potentiels de licence.

- N’utilisez pas une VM déjà connectée au domaine, afin d’éviter tout problème potentiel.

- Effectuez un nettoyage de l’image, par exemple en vidant la corbeille et en supprimant les fichiers du dossier de téléchargement.

- Définissez la configuration IP sur DHCP, pour éviter que d’autres machines virtuelles ne réclament la même adresse IP statique.

- Désactivez les snapshots automatiques. Le processus échouera si des snapshots sont créés pendant la construction, car cela empêchera l’accès à tous les disques nécessaires.

Ensuite, exportez la VM vers un fichier modèle sur le système Hyper-V. Cliquez avec le bouton droit de la souris sur la VM éteinte, sélectionnez Exporter et choisissez une destination pour le dossier. Localisez le fichier VHDX et copiez-le dans un nouveau dossier. Il est utile de conserver le disque d’un modèle dans un dossier distinct pour en faciliter la gestion.

Création du script PowerShell avec les paramètres de la VM Hyper-V

Le script PowerShell suivant crée et démarre une nouvelle VM Hyper-V basée sur le modèle avec des valeurs définies pour l’allocation de mémoire, le nombre de CPU virtuels et la destination de la VM. Examinez le script pour comprendre son fonctionnement et ajustez-le si nécessaire. Le système peut vous demander d’autoriser l’accès à PowerShell, mais il s’agit d’un comportement normal.

## Start variables

$destFolder = "c:\myVirtualMachines"

$vmName ="TestingVM"

$memoryInMB = 4096MB

$vCPU = 2

## End variables

New-Item -ItemType "directory" -Path $destFolder\$vmName
Write-Host "c:\templates\my2019template.vhdx" -Destination $destFolder\$vmName.vhdx

Copy-Item -Path "c:\templates\my2019template.vhdx" -Destination $destFolder\$vmName\$vmName.vhdx

New-VM -Name $vmName -MemoryStartupBytes ($memoryInMB) -VHDPath "$destFolder\$vmName\$vmName.vhdx" -Path

$destFolder\$vmName -Generation 2

Set-VMProcessor -VMName $vmName -Count $vCPU

Start-VM -Name $vmName

Write-Host "Virtual Machine '$vmName' has been created and started."

Établir des connexions réseau après le déploiement de la VM

À ce stade, la nouvelle VM est configurée en tant que serveur unique non relié à un domaine. L’administrateur peut alors configurer la VM selon ses besoins à l’aide du code placé dans le modèle de VM sous la forme d’un script PowerShell.

Après avoir déployé la VM, l’administrateur peut se connecter et utiliser un script pour définir la configuration IP, y compris l’adresse IP et les serveurs DNS, puis renommer la VM et la redémarrer. Exécutez le script suivant à partir de la console PowerShell, qui affichera les éventuelles erreurs, plutôt que de double-cliquer sur le script.

# Define network settings

$vmName = “MyTestVM”

$IPAddress = "192.168.1.100"   # Replace with the desired IP address

$SubnetMask = "255.255.255.0"  # Replace with the subnet mask

$Gateway = "192.168.1.1"       # Replace with the gateway IP address

$DNS1 = "192.168.1.2"          # Replace with primary DNS server

$DNS2 = "192.168.1.3"          # Replace with secondary DNS server

# Configure network settings

$Nic = Get-NetAdapter | Where-Object { $_.Status -eq "Up" }

$Nic | New-NetIPAddress -IPAddress $IPAddress -PrefixLength 24 -DefaultGateway $Gateway

$Nic | Set-DnsClientServerAddress -ServerAddresses $DNS1, $DNS2

# Display completion message

Write-Host "Network configuration and domain join complete."

Rename-Computer -NewName $vmName -Restart

La nouvelle VM est prête à être utilisée, mais il est possible de la personnaliser davantage. L’ajout de la VM au domaine est aussi simple que la création d’un second script pour effectuer la jonction de domaine :

    $domain = "MyDomain"

$domainCredential = Get-Credential -Message "Enter your domain credentials"

Add-Computer -DomainName $domain -Credential $domainCredential -Restart

Cet exemple est un point de départ pour personnaliser des déploiements avancés. Par exemple, l’administrateur peut produire des scripts supplémentaires pour configurer les applications ou les valeurs dans le registre, puis stocker ces configurations dans un référentiel de code. Le référentiel de code garantit que le script d’un modèle est le plus récent.

Pour approfondir sur Virtualisation de serveurs