Categories: Azure

Création d’une machine virtuelle sur Azure en PowerShell à partir d’un VHD existant

Dans un précédent article, je vous présentais comment envoyer un VHD personnalisé depuis votre poste local vers Azure. Aujourd’hui, nous allons voir comment à partir d’un VHD maison nous allons pouvoir créer une machine virtuelle et tous les composants nécessaires à son bon fonctionnement sur le cloud de Microsoft.

Dans mon exemple, l’objectif sera de provisionner un VM de type Windows 10 directement dans Azure. En effet, par défaut (et pour l’instant en tout cas – 25/10/2016), il est toujours impossible de provisionner une VM Windows 10 dans Windows Azure (sauf si votre subscribtion est obtenue via un compte MSDN Visual Studio Developer). Si vous avez testé, vous aurez peut-être observé les messages suivants :

Exclusively available for MSDN subscribtion…

J’ai donc créé un VHD sur lequel j’ai installé Windows 10 et je l’ai transféré dans un container sur mon Storage Account. Pour plus d’informations sur comment transférer un VHD vers Auzre, je vous invite à consulter ce article.

Nous allons donc maintenant utiliser ce VHD et le rattacher à mon infrastructure existante. Profitez-en pour récupérer le chemin complet vers votre VHD, nous en aurons besoin pour la suite. 😉

Bien sûr, lorsque je dis infrastructure existante, cela veut dire que vous devez déjà disposer des composants suivants (que nous aurons besoin de mentionner dans la CmdLet qui va nous permettra de créer notre virtual machine) :

  • Ressource Group
  • Virtual Network
  • Location (westeurope, northeurope, etc.) – il s’agit des codes name pour les différents centres Azure dans le monde. Vous pouvez retrouver la liste en suivant cette URL.
  • (éventuellement) Public IP (si votre VM doit disposer d’une adresse IP publique)
  • (éventuellement) Availability Set (si vous souhaitez rattacher cette machine virtuelle à un Availability Set déjà existant)

Une fois que vous êtes prêt nous allons exécuter la CmdLet suivante :

#Login-AzureRmAccount (vous devez être identifié sur Azure)
#Select-AzureRmSubscription -SubscribtionId "xxx-xxx-xxx" (vous avez déjà sélectionné la subscribtion dans laquelle vous travaillez)
$resourceGroupName = "ctxtgi12"
$destinationVhd = "https://xxxxxxxx.blob.core.windows.net/vhds/template_Windows10_tgi.vhd"
$virtualNetworkName = "VirtualNetwork"
$locationName = "westeurope"
$virtualNetwork = Get-AzureRmVirtualNetwork -ResourceGroupName $resourceGroupName -Name $virtualNetworkName
$publicIp = New-AzureRmPublicIpAddress -Name "Win10-PIP" -ResourceGroupName $ResourceGroupName -Location $locationName -AllocationMethod Static
$networkInterface = New-AzureRmNetworkInterface -ResourceGroupName $resourceGroupName -Name "Win10-NIC" -Location $locationName -SubnetId $virtualNetwork.Subnets[0].Id -PublicIpAddressId $publicIp.Id
$availabilityset = (Get-AzureRmAvailabilitySet -ResourceGroupName $resourceGroupName)[0].Id
$vmConfig = New-AzureRmVMConfig -VMName "MyVMWindows10" -VMSize "Standard_DS1" #-AvailabilitySetID $availabilityset
$vmConfig = Set-AzureRmVMOSDisk -VM $vmConfig -Name "MyVMWindows10" -VhdUri $destinationVhd -CreateOption Attach -Windows
$vmConfig = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $networkInterface.Id
New-AzureRmVM -VM $vmConfig -Location $locationName -ResourceGroupName $resourceGroupName

A adapter bien entendu en fonction de votre cas de figure ! 🙂

Si l’on regarde un peu de plus prés les quelques lignes ci-dessus, nous pouvons remarquer les points suivants :

  • Ma VM est automatiquement ajoutée au sein de mon VirtualNetwork et disposera donc d’un IP au sein de mon Subnet. Dans le cas présent et au vue des choix de configuration de mon VirtualNetwork, ma VM se verra attribuer une NIC Win10-NIC avec une IP de type Statique.
  • Je lui attribue également automatiquement une addresse IP publique qui portera le nom Win10-PIP.
  • Ma VM s’appellera MyVMWindows10 et sera bien dans la zone West Europe.
  • Vous pouvez également l’intégrer automatiquement à un Availability Set (attention à accorder votre choix de Size VM). Dans mon exemple, j’ai créé une VM de type Standard_DS1.
  • Et enfin, dans l’avant-dernière ligne on utilise le paramètre attach pour attacher notre VHD à notre nouvelle machine virtuelle et on lui indique qu’il s’agira d’une VM de type Windows.

Après quelques instants, vous remarquerez sur le portail Azure que les différents éléments ont été créés et que notre machine virtuelle a d’ailleurs été automatiquement démarrée :

La machine virtuelle a été générée conformément à nos besoins (ip interne dans le virtual network, ip publique, sizing, azure location, etc.). Pour vérifier que tout est conforme, il ne vous reste alors plus qu’à vous y connecter en RDP ! 🙂

Un grand merci à Léon dont l’article suivant m’a permis d’avancer sur ce point : https://blogs.infosupport.com/creating-a-vm-in-azure-based-on-an-uploaded-vhd/. 🙂

Share
Published by
thibault

Recent Posts

Proton Mail s’attaque aux fuites d’identifiants sur le Dark Web pour mieux protéger ses utilisateurs

Proton Mail, le service de messagerie électronique chiffrée, a récemment annoncé le lancement d'une nouvelle…

2 jours ago

Ubuntu 24.04 LTS : une nouvelle ère pour l’innovation et la sécurité

25 avril 2024 - La communauté Ubuntu a récemment annoncé la sortie officielle d'Ubuntu 24.04…

4 jours ago

IBM s’empare d’HashiCorp pour 6,4 milliards de dollars

Un rachat stratégique pour le géant américain Le 24 avril 2024, IBM a officialisé le…

5 jours ago

Microsoft va limiter l’envoi d’e-mails en masse sur Exchange Online : la fin des campagnes marketing par email ?

A partir de 2025, Microsoft va limiter l'envoi d'e-mails en masse sur Exchange Online Lutte…

1 semaine ago

StayFocusd : Gagnez du temps en bloquant les sites Web distrayants

Bloquer un site Internet pour vous empêcher de le visiter Il y a quelques temps…

2 semaines ago

Microsoft injecte 1,5 milliard de dollars dans G42 pour consolider son leadership en IA

Face à l'essor fulgurant de l'intelligence artificielle et à l'arrivée de nouveaux acteurs puissants sur…

2 semaines ago