Caricare un disco rigido virtuale generalizzato e usarlo per creare nuove macchine virtuali in Azure

Questo argomento illustra come usare PowerShell per caricare un disco rigido virtuale di una macchina virtuale generalizzata in Azure, creare un'immagine dal disco rigido virtuale e quindi una nuova macchina virtuale da tale immagine. È possibile caricare un disco rigido virtuale esportato da uno strumento di virtualizzazione locale o da un altro cloud. Usando Managed Disks per la nuova macchina virtuale è possibile semplificarne la gestione e ottenere una maggiore disponibilità posizionando la macchina virtuale in un set di disponibilità.

Se si vuole usare uno script di esempio, vedere Script di esempio per caricare un disco rigido virtuale in Azure e creare una nuova macchina virtuale

Prima di iniziare

Generalizzare la macchina virtuale Windows con Sysprep

Sysprep rimuove anche tutte le informazioni sull'account personale e prepara la VM da usare come immagine. Per altre informazioni su Sysprep, vedere Come usare Sysprep: Introduzione.

Assicurarsi che i ruoli server in esecuzione sulla macchina siano supportati da Sysprep. Per ulteriori informazioni, vedere Supporto Sysprep per i ruoli server

Importante

Se si esegue Sysprep prima di caricare il disco rigido virtuale in Azure per la prima volta, verificare di aver preparato la VM prima di eseguire Sysprep.

  1. Accedere alla macchina virtuale Windows.
  2. Aprire la finestra del prompt dei comandi come amministratore. Impostare la directory su %windir%\system32\sysprep, quindi eseguire sysprep.exe.
  3. Nella finestra di dialogo Utilità preparazione sistema selezionare Passare alla Configurazione guidata e verificare che la casella di controllo Generalizza sia selezionata.
  4. In Opzioni di arresto del sistema selezionare Arresta il sistema.
  5. Fare clic su OK.

    Avvio di Sysprep

  6. Al termine, Sysprep arresta la macchina virtuale. Non riavviare la VM.

Accedere ad Azure

Se PowerShell versione 1.4 o successiva non è già stato installato, vedere Come installare e configurare Azure PowerShell.

  1. Aprire Azure PowerShell e accedere al proprio account di Azure. Verrà visualizzata una finestra popup in cui immettere le credenziali dell'account Azure.

    Login-AzureRmAccount
    
  2. Ottenere l'ID di sottoscrizione per le sottoscrizioni disponibili.

    Get-AzureRmSubscription
    
  3. Impostare la sottoscrizione corretta utilizzandone l'ID. Sostituire con l'ID della sottoscrizione corretta.

    Select-AzureRmSubscription -SubscriptionId "<subscriptionID>"
    

Ottenere l'account di archiviazione

Per archiviare l'immagine della VM caricata, è necessario un account di archiviazione di Azure. È possibile usare un account di archiviazione esistente o crearne uno nuovo.

Se il disco rigido virtuale verrà usato per creare un disco gestito per una macchina virtuale, la posizione dell'account di archiviazione deve corrispondere al percorso in cui verrà creata la macchina virtuale.

Per mostrare gli account di archiviazione disponibili, digitare:

Get-AzureRmStorageAccount

Se si vuole usare un account di archiviazione esistente, passare alla sezione Caricare l'immagine della VM .

Per creare un account di archiviazione, seguire questa procedura:

  1. È necessario il nome del gruppo di risorse in cui deve essere creato l'account di archiviazione. Per trovare tutti i gruppi di risorse inclusi nella sottoscrizione digitare:

    Get-AzureRmResourceGroup
    

    Per creare un gruppo di risorse denominato myResourceGroup nell'area Stati Uniti orientali, digitare:

    New-AzureRmResourceGroup -Name myResourceGroup -Location "East US"
    
  2. Creare un account di archiviazione denominato mystorageaccount in questo gruppo di risorse con il cmdlet New-AzureRmStorageAccount.

    New-AzureRmStorageAccount -ResourceGroupName myResourceGroup -Name mystorageaccount -Location "East US"`
        -SkuName "Standard_LRS" -Kind "Storage"
    

    I valori validi -SkuName validi sono:

    • Standard_LRS: archiviazione con ridondanza locale.
    • Standard_ZRS: archiviazione con ridondanza della zona.
    • Standard_GRS: archiviazione con ridondanza geografica.
    • Standard_RAGRS: archiviazione con ridondanza geografica e accesso in lettura.
    • Premium_LRS: archiviazione con ridondanza locale Premium.

Caricare il disco rigido virtuale nell'account di archiviazione

Usare il cmdlet Add-AzureRmVhd per caricare il disco rigido virtuale in un contenitore nell'account di archiviazione. In questo esempio, il file myVHD.vhd viene caricato da "C:\Users\Public\Documents\Virtual hard disks" in un account di archiviazione denominato mystorageaccount nel gruppo di risorse myResourceGroup. Il file viene inserito nel contenitore denominato mycontainer e il nuovo nome del file sarà myUploadedVHD.vhd.

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

Se l'operazione riesce, si ottiene una risposta simile alla seguente:

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

L'esecuzione del comando potrebbe richiedere del tempo, a seconda della connessione di rete e delle dimensioni del file VHD.

Salvare il percorso dell'URI di destinazione da usare in seguito se si desidera creare un disco gestito o una nuova macchina virtuale con il disco rigido virtuale caricato.

Altre opzioni per il caricamento di un disco rigido virtuale

È anche possibile caricare un disco rigido virtuale nell'account di archiviazione tramite uno dei seguenti modi:

Creare un'immagine gestita dal disco rigido virtuale caricato

Creare un'immagine gestita tramite il disco rigido virtuale del sistema operativo generalizzato. Sostituire i valori con i propri.

  1. Innanzitutto, impostare i parametri comuni:

    $vmName = "myVM"
    $computerName = "myComputer"
    $vmSize = "Standard_DS1_v2"
    $location = "East US" 
    $imageName = "yourImageName"
    
  2. Creare un'immagine tramite il disco rigido virtuale del sistema operativo generalizzato.

    $imageConfig = New-AzureRmImageConfig -Location $location
    $imageConfig = Set-AzureRmImageOsDisk -Image $imageConfig -OsType Windows -OsState Generalized -BlobUri $urlOfUploadedImageVhd
    $image = New-AzureRmImage -ImageName $imageName -ResourceGroupName $rgName -Image $imageConfig
    

Crea rete virtuale

Creare la rete virtuale e la subnet della rete virtuale stessa.

  1. Creare la subnet. Questo esempio crea una subnet denominata mySubnet con un prefisso di indirizzo di 10.0.0.0/24.

    $subnetName = "mySubnet"
    $singleSubnet = New-AzureRmVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.0.0/24
    
  2. Creare la rete virtuale. Questo esempio crea una rete virtuale denominata myVnet con un prefisso di indirizzo di 10.0.0.0/16.

    $vnetName = "myVnet"
    $vnet = New-AzureRmVirtualNetwork -Name $vnetName -ResourceGroupName $rgName -Location $location `
        -AddressPrefix 10.0.0.0/16 -Subnet $singleSubnet
    

Creare un indirizzo IP pubblico e un'interfaccia di rete

Per abilitare la comunicazione con la macchina virtuale nella rete virtuale, sono necessari un indirizzo IP pubblico e un'interfaccia di rete.

  1. Creare un indirizzo IP pubblico. In questo esempio viene creato un indirizzo IP pubblico denominato myPip.

    $ipName = "myPip"
    $pip = New-AzureRmPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $location `
        -AllocationMethod Dynamic
    
  2. Creare la scheda NIC. In questo esempio viene creata una scheda NIC denominata myNic.

    $nicName = "myNic"
    $nic = New-AzureRmNetworkInterface -Name $nicName -ResourceGroupName $rgName -Location $location `
        -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id
    

Creare il gruppo di sicurezza di rete e una regola RDP

Per essere in grado di accedere alla VM tramite RDP, è necessario disporre di una regola di sicurezza della rete (NSG) che consenta l'accesso RDP sulla porta 3389.

In questo esempio viene creato un gruppo di sicurezza di rete denominato myNsg contenente una regola denominata myRdpRule che consente il traffico RDP sulla porta 3389. Per altre informazioni sui gruppi di sicurezza di rete, vedere Apertura di porte a una VM tramite PowerShell.

$nsgName = "myNsg"
$ruleName = "myRdpRule"
$rdpRule = New-AzureRmNetworkSecurityRuleConfig -Name $ruleName -Description "Allow RDP" `
    -Access Allow -Protocol Tcp -Direction Inbound -Priority 110 `
    -SourceAddressPrefix Internet -SourcePortRange * `
    -DestinationAddressPrefix * -DestinationPortRange 3389

$nsg = New-AzureRmNetworkSecurityGroup -ResourceGroupName $rgName -Location $location `
    -Name $nsgName -SecurityRules $rdpRule

Creare una variabile per la rete virtuale

Creare una variabile per la rete virtuale realizzata.

$vnet = Get-AzureRmVirtualNetwork -ResourceGroupName $rgName -Name $vnetName

Ottenere le credenziali per la macchina virtuale

Il cmdlet seguente apre una finestra in cui verrà immesso un nuovo nome utente e una nuova password da usare come account dell'amministratore locale per accedere in da remoto alla macchina virtuale.

$cred = Get-Credential

Aggiungere il nome della macchina virtuale e le dimensioni per la configurazione della macchina virtuale.

$vm = New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize

Impostare l'immagine della macchina virtuale come immagine di origine per la nuova macchina virtuale

Impostare l'immagine di origine usando l'ID dell'immagine di macchina virtuale gestita.

$vm = Set-AzureRmVMSourceImage -VM $vm -Id $image.Id

Impostare la configurazione del sistema operativo e aggiungere la scheda di interfaccia di rete.

Immettere il tipo di archiviazione (PremiumLRS o StandardLRS) e le dimensioni del disco del sistema operativo. In questo esempio il tipo di account viene impostato su PremiumLRS, le dimensioni del disco su 128 GB e il caching del disco su ReadWrite.

$vm = Set-AzureRmVMOSDisk -VM $vm -DiskSizeInGB 128 `
-CreateOption FromImage -Caching ReadWrite

$vm = Set-AzureRmVMOperatingSystem -VM $vm -Windows -ComputerName $computerName `
-Credential $cred -ProvisionVMAgent -EnableAutoUpdate

$vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $nic.Id

Creare la VM

Creare la nuova VM usando la configurazione archiviata nella variabile $vm.

New-AzureRmVM -VM $vm -ResourceGroupName $rgName -Location $location

Verificare che la VM sia stata creata

Al termine, la VM appena creata dovrebbe essere visualizzata nel portale di Azure in Browse (Sfoglia) > Macchine virtuali. In alternativa, è possibile usare i comandi PowerShell seguenti:

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

Passaggi successivi

Per accedere alla nuova macchina virtuale, passare alla VM nel portale, fare clic su Connettie aprire il file RDP di Desktop remoto. Usare le credenziali dell'account della macchina virtuale originale per accedere alla nuova macchina virtuale. Per altre informazioni, vedere Come connettersi e accedere a una macchina virtuale di Azure che esegue Windows.