Esercitazione: Creare e gestire VM Windows con Azure PowerShell

Si applica a: ✔️ Macchine virtuali Windows

Le macchine virtuali di Azure offrono un ambiente di elaborazione completamente configurabile e flessibile. Questa esercitazione illustra le attività di base della distribuzione di una macchina virtuale di Azure, ad esempio la selezione delle dimensioni di una macchina virtuale, la selezione dell'immagine di una macchina virtuale e la distribuzione di una macchina virtuale. Si apprenderà come:

  • Creare e connettersi a una macchina virtuale
  • Selezionare e usare le immagini di una macchina virtuale
  • Visualizzare e usare macchine virtuali di dimensioni specifiche
  • Ridimensionare una VM
  • Visualizzare e comprendere lo stato di una macchina virtuale

Avviare Azure Cloud Shell

Azure Cloud Shell è una shell interattiva gratuita che può essere usata per eseguire la procedura di questo articolo. Include strumenti comuni di Azure preinstallati e configurati per l'uso con l'account.

Per aprire Cloud Shell, basta selezionare Prova nell'angolo superiore destro di un blocco di codice. È anche possibile avviare Cloud Shell in una scheda separata del browser visitando https://shell.azure.com/powershell. Selezionare Copia per copiare i blocchi di codice, incollarli in Cloud Shell e premere INVIO per eseguirli.

Creare un gruppo di risorse

Creare un gruppo di risorse con il comando New-AzResourceGroup.

Un gruppo di risorse di Azure è un contenitore logico in cui le risorse di Azure vengono distribuite e gestite. Il gruppo di risorse deve essere creato prima della macchina virtuale. Nell'esempio seguente viene creato un gruppo di risorse denominato myResourceGroupVM nell'area EastUS:

New-AzResourceGroup `
   -ResourceGroupName "myResourceGroupVM" `
   -Location "EastUS"

Il gruppo di risorse viene specificato quando si crea o si modifica una VM, come viene illustrato in questa esercitazione.

Creare una macchina virtuale

Per la creazione di una VM sono disponibili diverse opzioni, come l'immagine del sistema operativo, la configurazione di rete e le credenziali amministrative. In questo esempio viene creata una macchina virtuale denominata myVM, che esegue la versione predefinita di Windows Server 2016 Datacenter.

Impostare il nome utente e la password necessari per l'account amministratore della VM con Get-Credential:

$cred = Get-Credential

Creare la VM con New-AzVM.

New-AzVm `
    -ResourceGroupName "myResourceGroupVM" `
    -Name "myVM" `
    -Location "EastUS" `
    -VirtualNetworkName "myVnet" `
    -SubnetName "mySubnet" `
    -SecurityGroupName "myNetworkSecurityGroup" `
    -PublicIpAddressName "myPublicIpAddress" `
    -Credential $cred

Connettersi alla macchina virtuale

Dopo aver completato la distribuzione, creare una connessione desktop remoto con la macchina virtuale.

Eseguire i comandi seguenti per restituire l'indirizzo IP pubblico della macchina virtuale. Annotare questo indirizzo IP, in modo da potersi connettere ad esso con il browser per testare la connettività Web in un passaggio futuro.

Get-AzPublicIpAddress `
   -ResourceGroupName "myResourceGroupVM"  | Select IpAddress

Usare il comando seguente nel computer locale per creare una sessione desktop remoto con la macchina virtuale. Sostituire l'indirizzo IP con l'indirizzo publicIPAddress della macchina virtuale. Quando richiesto, immettere le credenziali usate durante la creazione della macchina virtuale.

mstsc /v:<publicIpAddress>

Nella finestra Sicurezza di Windows selezionare Altre opzioni e quindi Usa un altro account. Digitare il nome utente e la password creati per la macchina virtuale e quindi fare clic su OK.

Informazioni sulle immagini del marketplace

Azure Marketplace include diverse immagini che possono essere usate per creare una nuova macchina virtuale. Nei passaggi precedenti è stata creata una macchina virtuale usando l'immagine Windows Server 2016 Datacenter. In questo passaggio viene usato il modulo PowerShell per cercare nel marketplace altre immagini di Windows che possono essere usate come base per nuove macchine virtuali. Questo processo consiste nell'individuazione del server di pubblicazione, dell'offerta, dello SKU e, facoltativamente, di un numero di versione per identificare l'immagine.

Usare il comando Get-AzVMImagePublisher per ottenere un elenco degli editori di immagini:

Get-AzVMImagePublisher -Location "EastUS"

Usare Get-AzVMImageOffer per ottenere un elenco delle offerte di immagini. Con questo comando, l'elenco restituito viene filtrato nel server di pubblicazione specificato denominato MicrosoftWindowsServer:

Get-AzVMImageOffer `
   -Location "EastUS" `
   -PublisherName "MicrosoftWindowsServer"

Il risultato dovrebbe essere analogo all'esempio seguente:

Offer             PublisherName          Location
-----             -------------          --------
Windows-HUB       MicrosoftWindowsServer EastUS
WindowsServer     MicrosoftWindowsServer EastUS
WindowsServer-HUB MicrosoftWindowsServer EastUS

Il comando Get-AzVMImageSku verrà quindi filtrato in base al nome dell'editore e dell'offerta per ottenere un elenco di nomi di immagini.

Get-AzVMImageSku `
   -Location "EastUS" `
   -PublisherName "MicrosoftWindowsServer" `
   -Offer "WindowsServer"

Il risultato dovrebbe essere analogo all'esempio seguente:

Skus                                      Offer         PublisherName          Location
----                                      -----         -------------          --------
2008-R2-SP1                               WindowsServer MicrosoftWindowsServer EastUS  
2008-R2-SP1-smalldisk                     WindowsServer MicrosoftWindowsServer EastUS  
2012-Datacenter                           WindowsServer MicrosoftWindowsServer EastUS  
2012-Datacenter-smalldisk                 WindowsServer MicrosoftWindowsServer EastUS  
2012-R2-Datacenter                        WindowsServer MicrosoftWindowsServer EastUS  
2012-R2-Datacenter-smalldisk              WindowsServer MicrosoftWindowsServer EastUS  
2016-Datacenter                           WindowsServer MicrosoftWindowsServer EastUS  
2016-Datacenter-Server-Core               WindowsServer MicrosoftWindowsServer EastUS  
2016-Datacenter-Server-Core-smalldisk     WindowsServer MicrosoftWindowsServer EastUS
2016-Datacenter-smalldisk                 WindowsServer MicrosoftWindowsServer EastUS
2016-Datacenter-with-Containers           WindowsServer MicrosoftWindowsServer EastUS
2016-Datacenter-with-Containers-smalldisk WindowsServer MicrosoftWindowsServer EastUS
2016-Datacenter-with-RDSH                 WindowsServer MicrosoftWindowsServer EastUS
2016-Nano-Server                          WindowsServer MicrosoftWindowsServer EastUS

È possibile usare queste informazioni per distribuire una macchina virtuale con un'immagine specifica. Questo esempio distribuisce una macchina virtuale tramite la versione più recente di Windows Server 2016 con un'immagine dei contenitori.

New-AzVm `
    -ResourceGroupName "myResourceGroupVM" `
    -Name "myVM2" `
    -Location "EastUS" `
    -VirtualNetworkName "myVnet" `
    -SubnetName "mySubnet" `
    -SecurityGroupName "myNetworkSecurityGroup" `
    -PublicIpAddressName "myPublicIpAddress2" `
    -ImageName "MicrosoftWindowsServer:WindowsServer:2016-Datacenter-with-Containers:latest" `
    -Credential $cred `
    -AsJob

Il parametro -AsJob crea la VM come attività in background, in modo che i prompt di PowerShell vengano restituiti all'utente. È possibile visualizzare i dettagli dei processi in background con il cmdlet Get-Job .

Informazioni sulle dimensioni delle VM

La dimensione di VM determina la quantità di risorse di calcolo, come CPU, GPU e memoria, che viene resa disponibile per la VM. Le macchine virtuali dovrebbero essere create usando una dimensione di VM adeguata per il carico di lavoro. Se un carico di lavoro aumenta, è possibile ridimensionare anche una macchina virtuale esistente.

Dimensioni delle VM

La tabella seguente classifica le dimensioni a seconda dei casi d'uso.

Type Dimensioni comuni Descrizione
Utilizzo generico B, Dsv3, Dv3, DSv2, Dv2, Av2, DC Rapporto equilibrato tra CPU e memoria. Soluzione ideale per sviluppo/test e soluzioni di dati e applicazioni medio-piccole.
Ottimizzate per il calcolo Fsv2 Rapporto elevato tra CPU e memoria. Soluzione idonea per applicazioni con livelli medi di traffico, dispositivi di rete e processi batch.
Ottimizzate per la memoria Esv3, Ev3, M, DSv2, Dv2 Rapporto elevato tra memoria e core. Soluzione ideale per database relazionali, cache medio-grandi e analisi in memoria.
Ottimizzate per l'archiviazione Lsv2, Ls I/O e velocità effettiva del disco elevati. Ideale per Big Data, database SQL e NoSQL.
GPU NV, NVv2, NC, NCv2, NCv3, ND VM specializzate ottimizzate per livelli intensivi di rendering della grafica e modifica di video.
Prestazioni elevate H Le VM con CPU più potenti, con interfacce di rete ad alta velocità effettiva opzionali (RDMA).

Trovare le dimensioni delle macchine virtuali disponibili

Per visualizzare un elenco delle dimensioni di VM disponibili in una determinata area, usare il comando Get-AzVMSize.

Get-AzVMSize -Location "EastUS"

Ridimensionare una VM

Dopo la distribuzione di una VM, è possibile ridimensionarla per aumentare o ridurre l'allocazione delle risorse.

Prima di ridimensionare una VM, verificare che la dimensione desiderata sia disponibile nel cluster di VM corrente. Il comando Get-AzVMSize restituisce un elenco delle dimensioni.

Get-AzVMSize -ResourceGroupName "myResourceGroupVM" -VMName "myVM"

Se la dimensione è disponibile, la VM può essere ridimensionata mentre è accesa, ma durante l'operazione viene riavviata.

$vm = Get-AzVM `
   -ResourceGroupName "myResourceGroupVM"  `
   -VMName "myVM"
$vm.HardwareProfile.VmSize = "Standard_DS3_v2"
Update-AzVM `
   -VM $vm `
   -ResourceGroupName "myResourceGroupVM"

Se la dimensione desiderata non è disponibile nel cluster corrente, per poter eseguire l'operazione di ridimensionamento è prima necessario deallocare la VM. La deallocazione di una macchina virtuale rimuoverà tutti i dati sul disco temporaneo e l'indirizzo IP pubblico verrà modificato, a meno che non venga usato un indirizzo IP statico.

Stop-AzVM `
   -ResourceGroupName "myResourceGroupVM" `
   -Name "myVM" -Force
$vm = Get-AzVM `
   -ResourceGroupName "myResourceGroupVM"  `
   -VMName "myVM"
$vm.HardwareProfile.VmSize = "Standard_E2s_v3"
Update-AzVM -VM $vm `
   -ResourceGroupName "myResourceGroupVM"
Start-AzVM `
   -ResourceGroupName "myResourceGroupVM"  `
   -Name $vm.name

Stati di alimentazione di una macchina virtuale

Una macchina virtuale di Azure può avere uno dei diversi stati di alimentazione.

Stato di alimentazione Descrizione
Avvio in corso È in corso l'avvio della macchina virtuale.
In esecuzione La macchina virtuale è in esecuzione.
Stopping È in corso l'arresto della macchina virtuale.
Arrestato La macchina virtuale è stata arrestata. Alle macchine virtuali con stato arrestato continuano a essere addebitati i costi di calcolo.
Deallocazione È in corso la deallocazione della VM.
Deallocato La VM è stata rimossa dall'hypervisor, ma è ancora disponibile nel piano di controllo. Alle macchine virtuali con stato Deallocated non vengono addebitati i costi di calcolo.
- Lo stato di alimentazione della VM è sconosciuto.

Per recuperare lo stato di una determinata VM, usare il comando Get-AzVM. Assicurarsi di specificare un nome valido per una macchina virtuale e un gruppo di risorse.

Get-AzVM `
    -ResourceGroupName "myResourceGroupVM" `
    -Name "myVM" `
    -Status | Select @{n="Status"; e={$_.Statuses[1].Code}}

Verrà visualizzato un risultato simile all'esempio seguente:

Status
------
PowerState/running

Per recuperare lo stato di alimentazione di tutte le macchine virtuali nella sottoscrizione, usare l'API Macchine virtuali - Elenca tutte con il parametro statusOnly impostato su true.

Attività di gestione

Durante il ciclo di vita di una VM potrebbe essere necessario eseguire attività di gestione come l'avvio, l'arresto o l'eliminazione della VM. È consigliabile creare script per automatizzare le attività ripetitive o complesse. Tramite Azure PowerShell è possibile eseguire molte attività di gestione comuni dalla riga di comando o con script.

Arrestare una macchina virtuale

Arrestare e deallocare una VM con Stop-AzVM:

Stop-AzVM `
   -ResourceGroupName "myResourceGroupVM" `
   -Name "myVM" -Force

Se si vuole mantenere la macchina virtuale in uno stato di provisioning, usare il parametro -StayProvisioned.

Avviare una macchina virtuale

Start-AzVM `
   -ResourceGroupName "myResourceGroupVM" `
   -Name "myVM"

Eliminazione delle risorse della macchina virtuale

È possibile eliminare una macchina virtuale, ma per impostazione predefinita questa elimina solo la risorsa della macchina virtuale, non i dischi e le risorse di rete usate dalla macchina virtuale. È possibile modificare il comportamento predefinito per eliminare altre risorse quando si elimina la macchina virtuale. Per altre informazioni, vedere Eliminare una macchina virtuale e le risorse associate.

Passaggi successivi

In questa esercitazione sono illustrate la creazione e la gestione di VM di base, ad esempio:

  • Creare e connettersi a una macchina virtuale
  • Selezionare e usare le immagini di una macchina virtuale
  • Visualizzare e usare macchine virtuali di dimensioni specifiche
  • Ridimensionare una VM
  • Visualizzare e comprendere lo stato di una macchina virtuale

Passare all'esercitazione successiva per informazioni sui dischi di macchine virtuali.