Creare VM in Azure utilizzando VHD personalizzati

Oltre ad utilizzare I template delle macchine virtuali presenti nel Marketplace di Azure è possibile anche utilizzare le proprie immagini personalizzate per creare delle nuove VM. L’operazione è abbastanza semplice, ma richiede degli accorgimenti importanti, soprattutto per quanto riguarda la preparazione dei dischi VHD prima di caricarli in uno Storage Account di Azure.

Preparazione del disco della macchina virtuale

In Azure l’unico formato dei dischi virtuali che è attualmente accettato è il formato VHD. Pertanto, se avete creato la macchina on-premises con un disco con un formato diverso (ad esempio VHDX o VMDK) sarà necessario convertirlo prima di poterlo caricare in uno Storage Account.

Inoltre, è assolutamente necessario preparare la macchina prima di caricare il disco. I passaggi sono molteplici e sono tutti ben descritti alla pagina Prepare a Windows VHD or VHDX to upload to Azure

Figura 1: Preparazione della macchina virtuale per essere utilizzabile in Azure

Dopo aver preparato la VM per essere utilizzata in Azure e dopo aver installato tutto il software che volete mettere nella vostra immagine personalizzata, è necessario generalizzare il disco con il comando SYSPREP. Infatti, se il disco non è generalizzato non sarà possibile utilizzarlo per creare delle nuove Azure VM.

Figura 2: Generalizzazione dell’immagine con il comando SYSPREP

Upload del disco VHD in uno Storage Account di Azure

Dopo aver generalizzato il disco è possibile caricarlo in uno Storage Account. Potete utilizzare uno Storage Account esistente o crearne uno dedicato. Nel mio caso ho creato un nuovo Storage Account.

Figura 3: Creazione di un nuovo Storage Account

All’interno dello Storage Account ho poi provveduto a creare un nuovo Blob Container che ospiterà i miei VHD personalizzati

Figura 4: Creazione di un nuovo Blob Container che ospiterà i VHD personalizzati

Per poter caricare i dischi all’interno dello Storage Account potete utilizzare Microsoft Azure Storage Explorer, un tool gratuito ad interfaccia grafica che vi permette di gestire con facilità i contenuti dell’account di archiviazione, come ad esempio BLOB, file, code, tabelle, ecc.

Il tool è disponibile per Windows, Per Linux e per macOS ed è scaricabile dalla pagina https://azure.microsoft.com/it-it/features/storage-explorer/

L’installazione è molto rapida e la configurazione lo è ancora di più. Vi basterà inserire le credenziali del vostro Azure Account e potrete amministrare tutti gli Storage Account a cui l’utente ha accesso

Figura 5: Connessione ad Azure Storage

Una volta che vi siete connessi potete caricare il vostro VHD nel Container che preferite, come mostrato in figura:

Figura 6: Caricamento del VHD nel BLOB Container

L’operazione di caricamento può essere visualizzata direttamente dalla console di Microsoft Azure Storage Explorer

Figura 7: Caricamento del file VHD all’interno dello Storage Account

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

È consigliabile usare il servizio di importazione/esportazione se il tempo di caricamento stimato è maggiore di 7 giorni. È possibile usare DataTransferSpeedCalculator per stimare il tempo in base alla dimensione dei dati e alla velocità di trasferimento.

Terminato il trasferimento, dal portale sarà possibile verificare che il VHD è stato caricato nel container.

Figura 8: VHD personalizzato caricato nell’account di archiviazione

Creazione di una Managed Image utilizzando un VHD personalizzato

Azure Managed Disks semplifica la gestione dei dischi per le macchine virtuali di Azure grazie alla gestione degli Storage Account associati ai dischi delle VM. Specificando il tipo (HDD Standard, SSD Standard o SSD Premium) e le dimensioni del disco di cui avete bisogno, Azure crea e gestisce automaticamente il disco. Affidando a Managed Disks la gestione delle risorse di archiviazione non è più necessario preoccuparsi dei limiti degli Storage Account, cioè 20.000 IOPS per account. E non è più necessario copiare le immagini personalizzate (i file VHD) in diversi Storage Account. È possibile gestire tali immagini in una posizione centralizzata, un unico account di archiviazione per ogni area di Azure ed usarle per creare centinaia di macchine virtuali in una sottoscrizione.

Abbiamo anche visto in un precedente articolo Migrazione dei dischi delle macchine virtuali in Azure a Managed Disks che da qualche giorno nella pagina Overview delle macchine virtuali in Azure appare un messaggio che invita a migrare i dischi della VM da Unmanaged a Managed.

La creazione dell’immagine utilizzando un VHD personalizzato è possibile sia dal portale di Azure sia da PowerShell.

Dal portale di Azure vi basterà semplicemente cercare Images tra le diverse risorse disponibili e successivamente selezionare l’immagine che volete utilizzare per creare la nuova VM

Figura 9: Ricerca delle immagini disponibile nella nostra sottoscrizione dal portale di Azure

Cliccate sul pulsante Create Image e inserite di dati richiesti, come mostrato in figura:

Figura 10: Creazione di un’immagine personalizzata utilizzando il portale di Azure

Figura 11: Creazione dell’immagine completata

La stessa operazione può essere effettuata da PowerShell, creando come prima cosa la configurazione che avrà la VM con il comando New-AzureRmImageConfig e successivamente creando l’immagine con il comando New-AzureRmImage

Per eseguire queste operazioni è necessario che abbiate installato il modulo AzureRM versione 5.6 o successiva. Per verificare la versione installata utilizzate il comando Get-Module -ListAvailable AzureRM.Compute, mentre se volete installare il modulo AzureRM o aggiornarlo potete seguire le indicazioni presenti alla pagina Install Azure PowerShell on Windows with PowerShellGet

#Connessione all’Azure Account

Connect-AzureRmAccount

#Creazione del file di configurazione della VM utilizzando il VHD caricato

$imageConfig New-AzureRmImageConfig -Location “West Europe”

$imageConfig Set-AzureRmImageOsDisk -Image $imageConfig -OsType Windows -OsState Generalized -BlobUri “https://nicferrcustomimages.blob.core.windows.net/win2016/Win2016Custom.vhd” -DiskSizeGB 50

New-AzureRmImage -ImageName Win2016CustomImage2 -ResourceGroupName DEMORG -Image $imageConfig

Figura 12: Creazione dell’immagine personalizzata da PowerShell

Creazione della VM utilizzando un’immagine personalizzata

La creazione di una nuova VM può essere fatta utilizzando il portale di Azure oppure utilizzando la cmdlet PowerShell New-AzureRmVm. Nel portale di Azure dal nodo Images selezionate l’immagine che volete utilizzare e cliccate sul pulsante + Create VM. Vi si aprirà il blade che vi cheiderà le caratteristiche che deve avere la VM, come mostrato in figura:

Figura 13: Creazione di una nuova VM partendo da un’immagine personalizzata

Da PowerShell la creazione della nuova VM partendo dall’immagine personalizzata può essere fatta semplicemente lanciando il comando:

#Creazione della VM

New-AzureRmVm -ResourceGroupName DEMORG -Name “CustomVM02” -ImageName Win2016CustomImage -Location “West Europe” -VirtualNetworkName “DEMO-Vnet” -SubnetName “default” -SecurityGroupName “DEMO-NSG” -PublicIpAddressName “DEMO-PIP” -OpenPorts 3389

Figura 14: Creazione della Azure VM da PowerShell comletata

Conclusioni

L’utilizzo di immagini personalizzate per la creazione delle macchine virtuali in Azure rappresenta un notevole vantaggio, perché ci permette di crearle on-premises e di poterle distribuire online. Invece che usare le immagini presenti nel Marketplace abbiamo la possibilità di creare un nostro Template da riutilizzare poi facilmente per la creazione delle VM.