Caricare un disco rigido virtuale generalizzato in Azure e creare una nuova macchina virtuale

In questo argomento viene illustrato il caricamento di un disco non gestito in un account di archiviazione e quindi la creazione di una nuova macchina virtuale tramite il disco caricato. Tutte le informazioni sull'account personale sono state rimosse da un'immagine di disco rigido virtuale generalizzato mediante Sysprep.

Se si vuole creare una VM da un disco rigido virtuale specializzato in un account di archiviazione, vedere Creare una macchina virtuale da un disco specializzato.

In questo argomento viene illustrato l'uso degli account di archiviazione, ma si consiglia di passare all'uso di dischi gestiti. Per una procedura dettagliata completa su come preparare, caricare e creare una nuova macchina virtuale mediante dischi gestiti, vedere Creare una nuova macchina virtuale da un disco rigido virtuale generalizzato e caricato in Azure usando Managed Disks.

Preparare la macchina virtuale

Tutte le informazioni sull'account personale sono state rimosse da un'immagine del disco rigido virtuale generalizzata tramite Sysprep. Se si vuole usare il disco rigido virtuale come immagine dalla quale creare nuove macchine virtuali, è necessario:

Generalizzare una macchina virtuale Windows mediante Sysprep

Questa sezione illustra come generalizzare la macchina virtuale di Windows da usare come immagine. 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.

Importante

Non riavviare la macchina virtuale fino a quando non viene completato il caricamento del disco rigido virtuale in Azure o la creazione dell'immagine dalla macchina virtuale. Se la macchina virtuale viene riavviata accidentalmente, eseguire Sysprep per generalizzarla nuovamente.

Caricare il disco rigido virtuale

Caricare il disco rigido virtuale in un account di archiviazione di Azure.

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 <subscriptionID> 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.

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 occidentali, digitare:

    New-AzureRmResourceGroup -Name myResourceGroup -Location "West 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 "West US" `
        -SkuName "Standard_LRS" -Kind "Storage"
    

Avviare il caricamento

Usare il cmdlet Add-AzureRmVhd per caricare l'immagine in un contenitore nell'account di archiviazione. In questo esempio, il file myVHD.vhd viene caricato da "C:\Users\Public\Documents\Virtual hard disks\" a 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.

Creare una nuova VM

È ora possibile usare il disco rigido virtuale caricato per creare una nuova macchina virtuale.

Impostare l'URI del disco rigido virtuale

L'URI del disco rigido virtuale da usare è nel formato seguente: https://mystorageaccount.blob.core.windows.net/mycontainer/MyVhdName.vhd. In questo esempio il disco rigido virtuale denominato myVHD si trova nell'account di archiviazione mystorageaccount del contenitore mycontainer.

$imageURI = "https://mystorageaccount.blob.core.windows.net/mycontainer/myVhd.vhd"

Crea rete virtuale

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

  1. Creare la subnet. Nell'esempio seguente viene creata una subnet denominata mySubnet nel gruppo di risorse myResourceGroup con il prefisso di indirizzo 10.0.0.0/24.

    $rgName = "myResourceGroup"
    $subnetName = "mySubnet"
    $singleSubnet = New-AzureRmVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.0.0/24
    
  2. Creare la rete virtuale. Nell'esempio seguente viene creata una rete virtuale denominata myVnet nell'ubicazione West US con il prefisso di indirizzo 10.0.0.0/16.

    $location = "West US"
    $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 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"

$rdpRule = New-AzureRmNetworkSecurityRuleConfig -Name myRdpRule -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

Creare la VM

Lo script di PowerShell seguente illustra come impostare le configurazioni della macchina virtuale e usare l'immagine della VM caricata come origine per la nuova installazione.

# Enter a new user name and password to use as the local administrator account 
    # for remotely accessing the VM.
    $cred = Get-Credential

    # Name of the storage account where the VHD is located. This example sets the 
    # storage account name as "myStorageAccount"
    $storageAccName = "myStorageAccount"

    # Name of the virtual machine. This example sets the VM name as "myVM".
    $vmName = "myVM"

    # Size of the virtual machine. This example creates "Standard_D2_v2" sized VM. 
    # See the VM sizes documentation for more information: 
    # https://azure.microsoft.com/documentation/articles/virtual-machines-windows-sizes/
    $vmSize = "Standard_D2_v2"

    # Computer name for the VM. This examples sets the computer name as "myComputer".
    $computerName = "myComputer"

    # Name of the disk that holds the OS. This example sets the 
    # OS disk name as "myOsDisk"
    $osDiskName = "myOsDisk"

    # Assign a SKU name. This example sets the SKU name as "Standard_LRS"
    # Valid values for -SkuName are: Standard_LRS - locally redundant storage, Standard_ZRS - zone redundant
    # storage, Standard_GRS - geo redundant storage, Standard_RAGRS - read access geo redundant storage,
    # Premium_LRS - premium locally redundant storage. 
    $skuName = "Standard_LRS"

    # Get the storage account where the uploaded image is stored
    $storageAcc = Get-AzureRmStorageAccount -ResourceGroupName $rgName -AccountName $storageAccName

    # Set the VM name and size
    $vmConfig = New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize

    #Set the Windows operating system configuration and add the NIC
    $vm = Set-AzureRmVMOperatingSystem -VM $vmConfig -Windows -ComputerName $computerName `
        -Credential $cred -ProvisionVMAgent -EnableAutoUpdate
    $vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $nic.Id

    # Create the OS disk URI
    $osDiskUri = '{0}vhds/{1}-{2}.vhd' `
        -f $storageAcc.PrimaryEndpoints.Blob.ToString(), $vmName.ToLower(), $osDiskName

    # Configure the OS disk to be created from the existing VHD image (-CreateOption fromImage).
    $vm = Set-AzureRmVMOSDisk -VM $vm -Name $osDiskName -VhdUri $osDiskUri `
        -CreateOption fromImage -SourceImageUri $imageURI -Windows

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

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 gestire la nuova macchina virtuale con Azure PowerShell, vedere Gestire macchine virtuali di Azure con Azure Resource Manager e PowerShell.