Creare un'immagine personalizzata di una VM di Azure con PowerShellCreate a custom image of an Azure VM using PowerShell

Le immagini personalizzate sono come le immagini di marketplace, ma si possono creare autonomamente.Custom images are like marketplace images, but you create them yourself. Le immagini personalizzate possono essere usate per le configurazioni di avvio, ad esempio il precaricamento e le configurazioni di applicazioni e altre configurazioni del sistema operativo.Custom images can be used to bootstrap configurations such as preloading applications, application configurations, and other OS configurations. In questa esercitazione viene creata un'immagine personalizzata di una macchina virtuale di Azure.In this tutorial, you create your own custom image of an Azure virtual machine. Si apprenderà come:You learn how to:

  • Eseguire Sysprep e generalizzare le macchine virtualiSysprep and generalize VMs
  • Creare un'immagine personalizzataCreate a custom image
  • Creare una VM da un'immagine personalizzataCreate a VM from a custom image
  • Elencare tutte le immagini nella sottoscrizioneList all the images in your subscription
  • Eliminare un'immagineDelete an image

Questa esercitazione richiede il modulo Azure PowerShell 3.6 o versioni successive.This tutorial requires the Azure PowerShell module version 3.6 or later. Eseguire Get-Module -ListAvailable AzureRM per trovare la versione.Run Get-Module -ListAvailable AzureRM to find the version. Se è necessario eseguire l'aggiornamento, vedere Installare e configurare Azure PowerShell.If you need to upgrade, see Install Azure PowerShell module.

Prima di iniziareBefore you begin

La procedura riportata di seguito illustra come prendere una VM esistente e convertirla in un'immagine personalizzata riutilizzabile che è possibile usare per creare nuove istanze di VM.The steps below detail how to take an existing VM and turn it into a re-usable custom image that you can use to create new VM instances.

Per completare l'esempio contenuto in questa esercitazione è necessario disporre di una macchina virtuale esistente.To complete the example in this tutorial, you must have an existing virtual machine. Se necessario, questo script di esempio può crearne una appositamente.If needed, this script sample can create one for you. Quando si esegue l'esercitazione, sostituire i nomi del gruppo di risorse e delle VM dove necessario.When working through the tutorial, replace the resource group and VM names where needed.

Preparare la VMPrepare VM

Per creare un'immagine di una macchina virtuale, è necessario preparare la VM generalizzandola, eseguendo la deallocazione e contrassegnando la VM di origine come generalizzata in Azure.To create an image of a virtual machine, you need to prepare the VM by generalizing the VM, deallocating, and then marking the source VM as generalized in Azure.

Generalizzare la macchina virtuale Windows con SysprepGeneralize the Windows VM using Sysprep

Sysprep rimuove anche tutte le informazioni sull'account personale e prepara la VM da usare come immagine.Sysprep removes all your personal account information, among other things, and prepares the machine to be used as an image. Per altre informazioni su Sysprep, vedere Come usare Sysprep: Introduzione.For details about Sysprep, see How to Use Sysprep: An Introduction.

  1. Connettersi alla macchina virtuale.Connect to the virtual machine.
  2. Aprire la finestra del prompt dei comandi come amministratore.Open the Command Prompt window as an administrator. Cambiare la directory in %windir%\system32\sysprep e quindi eseguire sysprep.exe.Change the directory to %windir%\system32\sysprep, and then run 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.In the System Preparation Tool dialog box, select Enter System Out-of-Box Experience (OOBE), and make sure that the Generalize check box is selected.
  4. In Opzioni di arresto selezionare Arresta il sistema e fare clic su OK.In Shutdown Options, select Shutdown and then click OK.
  5. Al termine, Sysprep arresta la macchina virtuale.When Sysprep completes, it shuts down the virtual machine. Non riavviare la VM.Do not restart the VM.

Deallocare e contrassegnare la VM come generalizzataDeallocate and mark the VM as generalized

Per creare un'immagine, la VM deve essere deallocata e contrassegnata come generalizzata in Azure.To create an image, the VM needs to be deallocated and marked as generalized in Azure.

Deallocare la VM usando Stop-AzureRmVM.Deallocated the VM using Stop-AzureRmVM.

Stop-AzureRmVM -ResourceGroupName myResourceGroup -Name myVM -Force

Impostare lo stato della macchina virtuale su -Generalized usando Set-AzureRmVm.Set the status of the virtual machine to -Generalized using Set-AzureRmVm.

Set-AzureRmVM -ResourceGroupName myResourceGroup -Name myVM -Generalized

Creare l'immagineCreate the image

A questo punto è possibile creare un'immagine della VM usando New-AzureRmImageConfig e New-AzureRmImage.Now you can create an image of the VM by using New-AzureRmImageConfig and New-AzureRmImage. Nell'esempio seguente viene creata un'immagine denominata myImage dalla VM denominata myVM.The following example creates an image named myImage from a VM named myVM.

Trovare la macchina virtuale.Get the virtual machine.

$vm = Get-AzureRmVM -Name myVM -ResourceGroupName myResourceGroup

Creare la configurazione dell'immagine.Create the image configuration.

$image = New-AzureRmImageConfig -Location EastUS -SourceVirtualMachineId $vm.ID 

Creare l'immagine.Create the image.

New-AzureRmImage -Image $image -ImageName myImage -ResourceGroupName myResourceGroup

Creare VM dall'immagineCreate VMs from the image

Ora che si dispone di un'immagine, è possibile creare una o più nuove VM dall'immagine.Now that you have an image, you can create one or more new VMs from the image. Creare una VM da un'immagine personalizzata è molto simile a creare una VM usando un'immagine del Marketplace.Creating a VM from a custom image is very similar to creating a VM using a Marketplace image. Quando si usa un'immagine del Marketplace, è necessario immettere le informazioni sull'immagine, il provider dell'immagine, l'offerta, lo SKU e la versione.When you use a Marketplace image, you have to provide the information about the image, image provider, offer, SKU and version. Con un'immagine personalizzata è sufficiente fornire l'ID della risorsa immagine personalizzata.With a custom image, you just need to provide the ID of the custom image resource.

Nello script seguente si crea la variabile $image per memorizzare le informazioni sull'immagine personalizzata usando Get-AzureRmImage e quindi si usa Set-AzureRmVMSourceImage e si specifica l'ID mediante la variabile $image appena creata.In the following script, we create a variable $image to store information about the custom image using Get-AzureRmImage and then we use Set-AzureRmVMSourceImage and specify the ID using the $image variable we just created.

Lo script crea una VM denominata myVMfromImage dall'immagine personalizzata in un nuovo gruppo di risorse denominato myResourceGroupFromImage nella posizione Stati Uniti occidentali.The script creates a VM named myVMfromImage from our custom image in a new resource group named myResourceGroupFromImage in the West US location.

$cred = Get-Credential -Message "Enter a username and password for the virtual machine."

New-AzureRmResourceGroup -Name myResourceGroupFromImage -Location EastUS

$subnetConfig = New-AzureRmVirtualNetworkSubnetConfig `
    -Name mySubnet `
    -AddressPrefix 192.168.1.0/24

$vnet = New-AzureRmVirtualNetwork `
    -ResourceGroupName myResourceGroupFromImage `
    -Location EastUS `
    -Name MYvNET `
    -AddressPrefix 192.168.0.0/16 `
    -Subnet $subnetConfig

$pip = New-AzureRmPublicIpAddress `
    -ResourceGroupName myResourceGroupFromImage `
    -Location EastUS `
    -Name "mypublicdns$(Get-Random)" `
    -AllocationMethod Static `
    -IdleTimeoutInMinutes 4

  $nsgRuleRDP = New-AzureRmNetworkSecurityRuleConfig `
    -Name myNetworkSecurityGroupRuleRDP `
    -Protocol Tcp `
    -Direction Inbound `
    -Priority 1000 `
    -SourceAddressPrefix * `
    -SourcePortRange * `
    -DestinationAddressPrefix * `
    -DestinationPortRange 3389 `
    -Access Allow

  $nsg = New-AzureRmNetworkSecurityGroup `
    -ResourceGroupName myResourceGroupFromImage `
    -Location EastUS `
    -Name myNetworkSecurityGroup `
    -SecurityRules $nsgRuleRDP

$nic = New-AzureRmNetworkInterface `
    -Name myNic `
    -ResourceGroupName myResourceGroupFromImage `
    -Location EastUS `
    -SubnetId $vnet.Subnets[0].Id `
    -PublicIpAddressId $pip.Id `
    -NetworkSecurityGroupId $nsg.Id

$vmConfig = New-AzureRmVMConfig `
    -VMName myVMfromImage `
    -VMSize Standard_D1 | Set-AzureRmVMOperatingSystem -Windows `
        -ComputerName myComputer `
        -Credential $cred 

# Here is where we create a variable to store information about the image 
$image = Get-AzureRmImage `
    -ImageName myImage `
    -ResourceGroupName myResourceGroup

# Here is where we specify that we want to create the VM from and image and provide the image ID
$vmConfig = Set-AzureRmVMSourceImage -VM $vmConfig -Id $image.Id

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

New-AzureRmVM `
    -ResourceGroupName myResourceGroupFromImage `
    -Location EastUS `
    -VM $vmConfig

Gestione delle immaginiImage management

Di seguito sono riportati alcuni esempi di attività comuni di gestione delle immagini e della relativa modalità di completamento tramite PowerShell.Here are some examples of common management image tasks and how to complete them using PowerShell.

Elencare tutte le immagini per nome.List all images by name.

$images = Find-AzureRMResource -ResourceType Microsoft.Compute/images 
$images.name

Eliminare un'immagine.Delete an image. Questo esempio elimina l'immagine denominata myOldImage da myResourceGroup.This example deletes the image named myOldImage from the myResourceGroup.

Remove-AzureRmImage `
    -ImageName myOldImage `
    -ResourceGroupName myResourceGroup

Passaggi successiviNext steps

In questa esercitazione è stata creata un'immagine di macchina virtuale personalizzata.In this tutorial, you created a custom VM image. Si è appreso come:You learned how to:

  • Eseguire Sysprep e generalizzare le macchine virtualiSysprep and generalize VMs
  • Creare un'immagine personalizzataCreate a custom image
  • Creare una VM da un'immagine personalizzataCreate a VM from a custom image
  • Elencare tutte le immagini nella sottoscrizioneList all the images in your subscription
  • Eliminare un'immagineDelete an image

Passare all'esercitazione successiva per la descrizione delle macchine virtuali a disponibilità elevata.Advance to the next tutorial to learn about how highly available virtual machines.