Lire en anglais

Partager via


Créer une machine virtuelle à partir d’un disque dur virtuel spécialisé dans un compte de stockage

Créez une machine virtuelle en attachant un disque non managé spécialisé en tant que disque du système d’exploitation à l’aide de PowerShell. Un disque spécialisé est une copie du disque dur virtuel à partir d’une machine virtuelle existante qui gère les comptes d’utilisateur, les applications et d’autres données d’état de votre machine virtuelle d’origine.

Deux options s'offrent à vous :

Option 1 : Télécharger un disque dur virtuel spécialisé

Vous pouvez charger le disque dur virtuel à partir d’une machine virtuelle spécialisée créée avec un outil de virtualisation local, tel qu’Hyper-V ou une machine virtuelle exportée à partir d’un autre cloud.

Préparer la machine virtuelle

Vous pouvez charger un disque dur virtuel spécialisé créé à l’aide d’une machine virtuelle locale ou d’un disque dur virtuel exporté à partir d’un autre cloud. Un disque dur virtuel spécialisé gère les comptes d’utilisateur, les applications et d’autres données d’état de votre machine virtuelle d’origine. Si vous envisagez d’utiliser le disque dur virtuel as-is pour créer une machine virtuelle, vérifiez que les étapes suivantes sont effectuées.

  • Préparer un VHD Windows à téléverser sur Azure. Ne pas généraliser la machine virtuelle à l’aide de Sysprep.
  • Supprimez tous les outils et agents de virtualisation invité installés sur la machine virtuelle (c’est-à-dire les outils VMware).
  • Vérifiez que la machine virtuelle est configurée pour extraire son adresse IP et ses paramètres DNS via DHCP. Cela garantit que le serveur obtient une adresse IP au sein du réseau virtuel lors du démarrage.

Obtenir le compte de stockage

Vous avez besoin d’un compte de stockage dans Azure pour stocker l’image de machine virtuelle chargée. Vous pouvez utiliser un compte de stockage existant ou en créer un.

Pour afficher les comptes de stockage disponibles, tapez :

Get-AzStorageAccount

Si vous souhaitez utiliser un compte de stockage existant, passez à la section Charger l’image de machine virtuelle.

Si vous devez créer un compte de stockage, procédez comme suit :

  1. Vous avez besoin du nom du groupe de ressources où le compte de stockage doit être créé. Pour connaître tous les groupes de ressources qui se trouvent dans votre abonnement, tapez :

    Get-AzResourceGroup
    

    Pour créer un groupe de ressources nommé myResourceGroup dans la région USA Ouest, tapez :

    New-AzResourceGroup -Name myResourceGroup -Location "West US"
    
  2. Créez un compte de stockage nommé mystorageaccount dans ce groupe de ressources à l’aide de l’applet de commande New-AzStorageAccount :

    New-AzStorageAccount -ResourceGroupName myResourceGroup -Name mystorageaccount -Location "West US" `
        -SkuName "Standard_LRS" -Kind "Storage"
    

Téléverser le VHD (disque dur virtuel) dans votre compte de stockage.

Utilisez l’applet de commande Add-AzVhd pour charger l’image dans un conteneur de votre compte de stockage. Cet exemple charge le fichier myVHD.vhd à partir de "C:\Users\Public\Documents\Virtual hard disks\" dans un compte de stockage nommé mystorageaccount dans le groupe de ressources myResourceGroup. Le fichier sera placé dans le conteneur nommé mycontainer et le nouveau nom de fichier sera myUploadedVHD.vhd.

$rgName = "myResourceGroup"
$urlOfUploadedImageVhd = "https://mystorageaccount.blob.core.windows.net/mycontainer/myUploadedVHD.vhd"
Add-AzVhd -ResourceGroupName $rgName -Destination $urlOfUploadedImageVhd `
    -LocalFilePath "C:\Users\Public\Documents\Virtual hard disks\myVHD.vhd"

Si elle réussit, vous obtenez une réponse semblable à celle-ci :

MD5 hash is being calculated for the file C:\Users\Public\Documents\Virtual hard disks\myVHD.vhd.
MD5 hash calculation is completed.
Elapsed time for the operation: 00:03:35
Creating new page blob of size 53687091712...
Elapsed time for upload: 01:12:49

LocalFilePath           DestinationUri
-------------           --------------
C:\Users\Public\Doc...  https://mystorageaccount.blob.core.windows.net/mycontainer/myUploadedVHD.vhd

En fonction de votre connexion réseau et de la taille de votre fichier VHD, cette commande peut prendre un certain temps.

Option 2 : Copier le VHD d’une machine virtuelle Azure existante

Vous pouvez copier un VHD vers un autre compte de stockage pour l'utiliser lors de la création d'une machine virtuelle identique.

Avant de commencer

Veillez à :

  • Disposez d’informations sur les comptes de stockage source et de destination . Pour la machine virtuelle source, vous devez disposer des noms de compte de stockage et de conteneur. En règle générale, le nom du conteneur sera VHDs. Vous devez également disposer d’un compte de stockage de destination. Si vous n’en avez pas encore, vous pouvez en créer un à l’aide du portail (Tous les services> comptes de stockage > Ajouter) ou à l’aide de l’applet de commande New-AzStorageAccount.
  • Vous avez téléchargé et installé l’outil AzCopy.

Libérer la machine virtuelle

Désallouez la machine virtuelle, ce qui libère le disque dur virtuel pour être copié.

  • Portail: cliquez sur machines virtuelles>myVM> Arrêter
  • PowerShell: utilisez Stop-AzVM pour arrêter (libérer) la machine virtuelle nommée myVM dans le groupe de ressources myResourceGroup.
Stop-AzVM -ResourceGroupName myResourceGroup -Name myVM

L'état de la machine virtuelle dans le portail Azure passe de arrêté à arrêté (désalloué) .

Obtenir les URL du compte de stockage

Vous avez besoin des URL des comptes de stockage source et de destination. Les URL ressemblent à : https://<storageaccount>.blob.core.windows.net/<containerName>/. Si vous connaissez déjà le compte de stockage et le nom du conteneur, vous pouvez simplement remplacer les informations entre les crochets pour créer votre URL.

Vous pouvez utiliser le portail Azure ou Azure Powershell pour obtenir l’URL :

  • Portail: cliquez sur le > pour tous les services>comptes de stockage>compte de stockage>les objets blob et votre fichier de disque dur virtuel source se trouve probablement dans le conteneur vhds. Cliquez sur Propriétés pour le conteneur, puis copiez le texte étiqueté URL. Vous aurez besoin des URL des conteneurs source et de destination.
  • PowerShell : utilisez Get-AzVM pour obtenir les informations relatives à la machine virtuelle nommée myVM dans le groupe de ressources myResourceGroup. Dans les résultats, consultez la section Profil de stockage pour le VHD Uri . La première partie de l’URI est l’URL du conteneur et la dernière partie est le nom du disque dur virtuel du système d’exploitation pour la machine virtuelle.
Get-AzVM -ResourceGroupName "myResourceGroup" -Name "myVM"

Obtenir les clés d’accès au stockage

Recherchez les clés d’accès pour les comptes de stockage source et de destination. Pour plus d’informations sur les clés d’accès, consultez À propos des comptes de stockage Azure.

  • Portail: cliquez sur tous les services>comptes de stockage>compte de stockage>clés d’accès. Copiez la clé étiquetée comme clé1.
  • powershell: utilisez Get-AzStorageAccountKey pour obtenir la clé de stockage du compte de stockage mystorageaccount dans le groupe de ressources myResourceGroup. Copiez la clé étiquetée key1.
Get-AzStorageAccountKey -Name mystorageaccount -ResourceGroupName myResourceGroup

Copier le VHD (disque dur virtuel)

Vous pouvez copier des fichiers entre des comptes de stockage à l’aide d’AzCopy. Pour le conteneur de destination, si le conteneur spécifié n’existe pas, il sera créé pour vous.

Pour utiliser AzCopy, ouvrez une invite de commandes sur votre ordinateur local et accédez au dossier où AzCopy est installé. Il sera similaire à C :\Program Files (x86)\Microsoft SDKs\Azure\AzCopy.

Pour copier tous les fichiers d’un conteneur, vous utilisez le commutateur /S. Cela peut être utilisé pour copier le disque dur virtuel du système d’exploitation et tous les disques de données s’ils se trouvent dans le même conteneur. Cet exemple montre comment copier tous les fichiers du conteneur mysourcecontainer dans le compte de stockage mysourcestorageaccount dans le conteneur mydestinationcontainer dans le compte de stockage mydestinationstorageaccount. Remplacez les noms des comptes de stockage et des conteneurs par vos propres noms. Remplacez <sourceStorageAccountKey1> et <destinationStorageAccountKey1> par vos propres clés.

AzCopy /Source:https://mysourcestorageaccount.blob.core.windows.net/mysourcecontainer `
    /Dest:https://mydestinationatorageaccount.blob.core.windows.net/mydestinationcontainer `
    /SourceKey:<sourceStorageAccountKey1> /DestKey:<destinationStorageAccountKey1> /S

Si vous souhaitez uniquement copier un disque dur virtuel spécifique dans un conteneur avec plusieurs fichiers, vous pouvez également spécifier le nom de fichier à l’aide du commutateur /Pattern. Dans cet exemple, seul le fichier nommé myFileName.vhd sera copié.

AzCopy /Source:https://mysourcestorageaccount.blob.core.windows.net/mysourcecontainer `
  /Dest:https://mydestinationatorageaccount.blob.core.windows.net/mydestinationcontainer `
  /SourceKey:<sourceStorageAccountKey1> /DestKey:<destinationStorageAccountKey1> `
  /Pattern:myFileName.vhd

Une fois l’opération terminée, vous recevez un message qui ressemble à ceci :

Finished 2 of total 2 file(s).
[2016/10/07 17:37:41] Transfer summary:
-----------------
Total files transferred: 2
Transfer successfully:   2
Transfer skipped:        0
Transfer failed:         0
Elapsed time:            00.00:13:07

Résolution des problèmes

  • Lorsque vous utilisez AZCopy, si vous voyez l’erreur « Le serveur n’a pas pu authentifier la demande », vérifiez que la valeur de l’en-tête d’autorisation est correctement formée, y compris la signature. Si vous utilisez la clé de stockage 2 ou la clé de stockage secondaire, essayez d’utiliser la clé de stockage principale ou la 1ère clé de stockage.

Créer la machine virtuelle

Vous devez créer la mise en réseau et d’autres ressources de machine virtuelle à utiliser par la nouvelle machine virtuelle.

Créer le sous-réseau et le réseau virtuel

Créez le réseau virtuel et le sous-réseau du réseau virtuel .

  1. Créez le sous-réseau. Cet exemple crée un sous-réseau nommé mySubNet, dans le groupe de ressources myResourceGroupet définit le préfixe d’adresse de sous-réseau sur 10.0.0.0/24.

    $rgName = "myResourceGroup"
    $subnetName = "mySubNet"
    $singleSubnet = New-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.0.0/24
    
  2. Créez le réseau virtuel. Cet exemple montre comment définir le nom du réseau virtuel myVnetName, l’emplacement USA Ouestet le préfixe d’adresse du réseau virtuel sur 10.0.0.0/16.

    $location = "West US"
    $vnetName = "myVnetName"
    $vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgName -Location $location `
        -AddressPrefix 10.0.0.0/16 -Subnet $singleSubnet
    

    Créer le groupe de sécurité réseau et une règle RDP

    Pour pouvoir vous connecter à votre machine virtuelle à l’aide du protocole RDP, vous devez disposer d’une règle de sécurité qui autorise l’accès RDP sur le port 3389. Étant donné que le disque dur virtuel pour la nouvelle machine virtuelle a été créé à partir d’une machine virtuelle spécialisée existante, une fois la machine virtuelle créée, vous pouvez utiliser un compte existant à partir de la machine virtuelle source qui avait l’autorisation de se connecter à l’aide de RDP. Cette opération doit être effectuée avant de créer l’interface réseau à laquelle elle sera associée.
    Cet exemple définit le nom du groupe de sécurité réseau sur myNsg et le nom de la règle RDP sur myRdpRule.

$nsgName = "myNsg"

$rdpRule = New-AzNetworkSecurityRuleConfig -Name myRdpRule -Description "Allow RDP" `
    -Access Allow -Protocol Tcp -Direction Inbound -Priority 110 `
    -SourceAddressPrefix Internet -SourcePortRange * `
    -DestinationAddressPrefix * -DestinationPortRange 3389
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $rgName -Location $location `
    -Name $nsgName -SecurityRules $rdpRule
	

Pour plus d’informations sur les points de terminaison et les règles NSG, consultez Ouverture de ports sur une machine virtuelle dans Azure à l’aide de PowerShell.

Créer une adresse IP publique et une interface réseau

Pour activer la communication avec la machine virtuelle dans le réseau virtuel, vous avez besoin d’une adresse IP publique et d’une interface réseau.

  1. Créez l’adresse IP publique. Dans cet exemple, le nom de l’adresse IP publique est défini sur myIP.

    $ipName = "myIP"
    $pip = New-AzPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $location `
        -AllocationMethod Dynamic
    
  2. Créez la carte réseau. Dans cet exemple, le nom de la carte réseau est configuré comme myNicName. Cette étape associe également le groupe de sécurité réseau créé précédemment à cette carte réseau.

    $nicName = "myNicName"
    $nic = New-AzNetworkInterface -Name $nicName -ResourceGroupName $rgName `
     -Location $location -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id
    

Définir le nom et la taille de la machine virtuelle

Cet exemple montre comment définir le nom de la machine virtuelle sur « myVM » et la taille de la machine virtuelle sur « Standard_A2 ».

$vmName = "myVM"
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize "Standard_A2"

Ajouter la carte réseau

$vm = Add-AzVMNetworkInterface -VM $vmConfig -Id $nic.Id

Configurer le disque du système d’exploitation

  1. Spécifiez l’URI pour le VHD que vous avez chargé ou copié. Dans cet exemple, le fichier VHD nommé myOsDisk.vhd est conservé dans un compte de stockage nommé myStorageAccount dans un conteneur nommé myContainer.

    $osDiskUri = "https://myStorageAccount.blob.core.windows.net/myContainer/myOsDisk.vhd"
    
  2. Ajoutez le disque du système d’exploitation. Dans cet exemple, lorsque le disque du système d’exploitation est créé, le terme « osDisk » est ajouté au nom de la machine virtuelle pour créer le nom du disque du système d’exploitation. Cet exemple spécifie également que ce disque dur virtuel Windows doit être attaché à la machine virtuelle en tant que disque du système d’exploitation.

    $osDiskName = $vmName + "osDisk"
    $vm = Set-AzVMOSDisk -VM $vm -Name $osDiskName -VhdUri $osDiskUri -CreateOption attach -Windows
    

Facultatif : si vous avez des disques de données qui doivent être attachés à la machine virtuelle, ajoutez les disques de données à l’aide des URL des disques durs virtuels de données et du numéro d’unité logique (Lun) approprié.

$dataDiskName = $vmName + "dataDisk"
$vm = Add-AzVMDataDisk -VM $vm -Name $dataDiskName -VhdUri $dataDiskUri -Lun 1 -CreateOption attach

Lors de l’utilisation d’un compte de stockage, les URL de disque de système d’exploitation et de données ressemblent à ceci : https://StorageAccountName.blob.core.windows.net/BlobContainerName/DiskName.vhd. Vous pouvez le trouver sur le portail en accédant au conteneur de stockage cible, en cliquant sur le système d’exploitation ou le disque dur virtuel de données copié, puis en copiant le contenu de l’URL.

Terminer la machine virtuelle

Créez la machine virtuelle à l’aide des configurations que nous venons de créer.

#Create the new VM
New-AzVM -ResourceGroupName $rgName -Location $location -VM $vm

Si cette commande a réussi, la sortie s’affiche comme suit :

RequestId IsSuccessStatusCode StatusCode ReasonPhrase
--------- ------------------- ---------- ------------
                         True         OK OK   

Vérifier que la machine virtuelle a été créée

Vous devez voir la machine virtuelle nouvellement créée dans le portail Azure , sous Tous les services>machines virtuelles, ou à l’aide des commandes PowerShell suivantes :

$vmList = Get-AzVM -ResourceGroupName $rgName
$vmList.Name

Étapes suivantes

Connectez-vous à votre nouvelle machine virtuelle. Pour plus d’informations, consultez Comment se connecter et se connecter à une machine virtuelle Azure exécutant Windows.