Objectif : Je possède une machine virtuelle tournant sur Windows 2016 Serveur et jouant le rôle de serveur DCHP. Cette VM se trouve tourne sur un HyperV local et je souhaite la trasnférer vers mon compte Azure

Caractéristiques de la machine virtuelle


Hyperviseur : Hyper-V

Type : Generation2

Mémoire : 4Go

Format du disque virtuel : vhdx

Taille : 30Go

Configuration  de la machine virtuelle :


Nom : W2016-ONPRE

IP : 192.168.0.1

GW : 192.168.0.1

DNS : 8.8.8.8

Rôle : DHCP Server

Etendue : 192.168.0.10 – 50

Mask : 255.255.255.0

GW : 192.168.0.1

DNS : 8.8.8.8

PROCEDURE


Pré-requis VM :

  • La VM ne doit pas excéder 1to
  • La carte réseau doit être en adressage dynamique pour le transfert
  • Vérifier la génération de la VM (1 ou 2) qui génère un fichier vhd ou vhdx. A savoir que seul les disque VHD sont gérés par Azure. On verra par la suite comment convertir un disque VHDX (Gen. 2) en VHD
  • Vérifier les fonctionnalités installées
  • Vérifier les applications installées
  • La VM doit être arrétée
  • Le disque virtuel doit être en taille fixe

Pré-requis Azure :

  • Avoir un groupe de ressource

Dans le portail Azure, cliquez sur Groupe de ressources -> Ajouter

Nom : ImportLocalServer

  • Avoir un compte de stockage (ou en crée un pour l’occasion)

Via l’interface : Comptes de stockageAjouter

Groupe de ressource : ImportLocalServer

Nom du compte de stockage : StockageLocalVM

Emplacement : Europe Occidentale

Type de compte : Storage V1

Replication : LRS

  • Un réseau

Via l’interface : Réseaux VirtuelAjouter

Nom : ReseauCloud

Espace d’adressage : 192.168.0.0/16

Groupe de ressources : ImportLocalServer

Emplacement : Europe Occidentale

Sous réseau : ReseauServersadmin

Plage : 192.168.0.0/24

Conversion du disque virtuel en VHD :


  1. Ouvrir en tant qu’administrateur un terminal Windows Powershell ISE
  2. Saisir la commande suivante : convert-vhd .\w2016-onpre.vhdx – destinationpath .\w2016-onpre.vhdx

Le fichier se convertit en peu de temps. Cela dépend toutefois de la taille de votre VM

Transfert du fichier VHD vers Azure :


  • Conversion du disque virtuel en taille fixe :

Allez dans le Gestionnaire HyperV

Cliquez sur la VM -> ParamètresDisquesModifier (changez le chemin du disque auparavant pour vous assurez qu’il prenne bien en compte la VM en VHD)

Dans l’assistant cliquez sur ModifierConvertirVHD – Taille fixe

Donner un nom au futur fichier : W2016-ONPRE-TF.vhd

La conversion prend quelques minutes (variable en fonction de la taille de la VM)

  • Création de l’espace de stockage sur Azure :

Via powershell : New-AzureRmStorageAccount -RessourceGroupName “ImportLocalServer” -name “stockagelocalvm” -Location “west europe” -SkuName “Standard_LRS” -Kind “Storage”

Via l’interface : Comptes de stockageAjouter

  • Groupe de ressource : ImportLocalServer
  • Nom du compte de stockage : StockageLocalVM
  • Emplacement : Europe Occidentale
  • Type de compte : Storage V1
  • Replication : LRS
  • Transfert du disque :

Les modules powershell suivant doivent être installés :

Install-module -name PowershellGet -Force

Install-module -name AzureRM -Allowclobber

Commandes pour le transfert :

Login-azurermaccount

$rg = “ImportLocalServer”

Add-AzureRmVHD -ResourceGroupName $rg -Destination https://StockageLocalVM.blob.core.windows.net/images/W2016-ONPRE.vhd -LocalFilePath “c:\VMConvert\W2016-ONPRE-TF.vhd

L’opération a pris 1h pour un serveur de 30Go

Pour vérifier que l’image est bien transférée :

Sur le portail Azure, aller dans Compte de Stockage -> StockageLocalVM -> Objet Blob -> Images : Vous devriez voir à cet endroit le fichier vhd

  • Création de la machine virtuelle dans Azure

Maintenant que le fichier de la VM local est transféré, il ne reste plus qu’à la créer sur Azure

Définir les variables ressource groupe, Region et Ip Publique

$rg = “ImportLocalServer”

$region = “West europe”

$ippub = “ippubvm”

Récupérer la config du réseau virtuel

$virtualn = get-azurermvirtualnetwork -Name “NetlocalVM” -resourcegroupname $rg

$subnetID = (Get-azurermvirtualnetworksubnetconfig -name “reseauserversadmin” -virtualnetwork $virtualn).id

Créer l’adresse IP publique :

$pip = new-azurermpublicipaddress – Name $ippub -ResourceGroupName $rg -Location $region -AllocationMethod Dynamic

Créer l’interface réseau :

$intnic = “interface2”

$nic = New-AzureRmNetworkInterface -Name $intnic -ResourceGroupName $rg -Location $region -Subnetid $subnetid -PublicIpAddressId $pip.id

Création de la machine virtuelle à partir du VHD :

$Credential = get-credential (indiquer le nom d’un compte local qui sera admin du serveur)

$nomcs = “StockageLocalVm” (espace de stockage)

$nomVM = “W2016-DHCP-Server” (Nom que possèdera la VM)

$storageinf = get-AzureRmStorageAccount -ResourceGroupName $rg -AccountName &nomcs (Récupération des infos du compte de stockage)

Configuration de la machine virtuelle :

$vmconfig = New-AzureRmVMConfig -VMName $nomvm -VMSize “Standard_A1”

Spécification de l’OS cible, du nom d’hote, de la  carte réseau :

$vm = set-AzureRmVMOperatingSystem -VM $vmConfig -Windows -ComputerName “W2016-DHCP-01” -credential $credential -ProvisionVMAgent -EnableAutoUpdate

$vm = Add-AzureRMVMNetworkInterface -VM $vm -Id $nic.id

Création du Système d’exploitation dasn l’espace de stockage :

$osDiskUri = ‘{0}vhds/{1} – {2}.vhd’ -f

$storageinf.PrimaryEndpoints.Blob.ToString(), $nomvm.ToLower(), “OS”

Configuration du disque OS pour utiliser le fichier VHD :

$vm = Set-AzureRmVMOSDisk -VM $vm -Name “OSWin” -VhdUri $osDiskUri -CreateOption fromImage -SourceImageUri “https://stockageLocalVM.blob.core.windows.net/images/W2016-ONPRE.vhd” -Windows

Approvisionnement de la machine virtuelle :

New-AzureRmVM -ResourceGroupName $rg -Location $region -VM $vm

La création de la machine prend un peu de temps, vous pouvez voir l’avancement sur le portail dans la partie machine virtuelle.