Snapshot di un Disco Virtuale usando PowerShell su Azure

Continuiamo con la nostra serie di articoli che, attraverso esempi pratici e semplificati, dimostrano l’applicazione di strumenti fondamentali nei rispettivi ambiti. Introduciamo alla realizzazione di uno Snapshot di un Disco Virtuale usando PowerShell su piattaforma Azure. Nel seguente laboratorio procederemo a creare uno immagine (snapshot) di un disco di una Macchina Virtuale assicurandoci di poter accedere all’immagine in qualsiasi momento. Utilizzeremo PowerShell per archiviare l’immagine nell’account di archiviazione:

Eseguiamo il log-in nella piattaforma Cloud Microsoft Azure e selezioniamo l’icona per accedere alla shell, quindi selezionare PowerShell esplodendo le opzioni avanzate. Utilizziamo un “account di archiviazione” già configurato per questo laboratorio, creiamo una nuova “condivisione file” chiamandola “fileshare”:

Adesso accediamo a tutte le risorse andando a reperire una serie di informazioni di cui necessitiamo per il nostro script. Abbiamo bisogno di:

  • Il nome del Gruppo di Risorse a cui appartiene la macchina Virtuale di cui vogliamo fare lo snapshot;
  • Il nome del disco della macchina virtuale di cui vogliamo fare lo snapshot,
  • Il nome dell’account di archiviazione pre-configurato per questo laboratorio;
  • Il valore della chiave “Key1” associata all’account di archiviazione che stiamo utilizzando.

Istanziamo le variabili mettendo insieme le informazioni reperite e aggiungiamo in coda ulteriori variabili necessarie. Infine stoppiamo la Macchina Virtuale:

Requesting a Cloud Shell.Succeeded.
Connecting terminal...

Welcome to Azure Cloud Shell

Type "az" to use Azure CLI
Type "help" to learn about Cloud Shell

MOTD: Save files to $home/clouddrive for persistence across sessions

VERBOSE: Authenticating to Azure ...
VERBOSE: Building your Azure drive ...
PS /home/cloud> $rg = "432-dcacabad-snapshot-an-azure-vm-disk-using-power"
PS /home/cloud> $diskname = "winVM_OsDisk_1_95986714a72b4222abf847c1230a011c"
PS /home/cloud> $storageAccountName = "stor2dmluz77uhdje"
PS /home/cloud> $storageAccountKey = "kETQpBZzSBCSQWdaamxqonG5FlGtnRGn29LtMWYlO1SWD2UQzULRH2uGx0XG96LpzG1OOEI2fUXfIEJlrQwdAA=="

$$ Variabili Aggiuntive:
PS /home/cloud> $storageContainerName = "container1"
PS /home/cloud> $destinationVHDFileName = "disk1.vhd"
PS /home/cloud> $useAzCopy = 1
PS /home/cloud> $vmName = "winVM"
PS /home/cloud> Stop-AzVM -ResourceGroupName $rg -Name $vmName

Virtual machine stopping operation
This cmdlet will stop the specified virtual machine. Do you want to continue?
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): Y
OperationId : d638ebc0-d5d9-4a37-8771-c9da28d20ef2
Status : Succeeded
StartTime : 11/29/2020 7:47:16 PM
EndTime : 11/29/2020 7:48:33 PM
Error :

PS /home/cloud>

Adesso autorizziamo l’accesso al Disco:

$sas = Grant-AzDiskAccess -ResourceGroupName $rg -DiskName $diskName -DurationInSecond $sasExpiryDuration -Access Read

Creiamo il contesto di archiviazione per lo snapshot:

$destinationContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey

Infine usando AzCopy e inviamo lo snapshot al “container1”:

PS /home/cloud> if($useAzCopy -eq 1)
>> {
>> $containerSASURI = New-AzStorageContainerSASToken -Context $destinationContext -ExpiryTime(get-date).AddSeconds($sasExpiryDuration) -FullUri -Name $storageContainerName -Permission rw
>> azcopy copy $sas.AccessSAS $containerSASURI
>>
>> }else{
>>
>> Start-AzStorageBlobCopy -AbsoluteUri $sas.AccessSAS -DestContainer $storageContainerName -DestContext $destinationContext -DestBlob $destinationVHDFileName
>> }
INFO: Scanning...
INFO: Failed to create one or more destination container(s). Your transfers may still succeed if the container already exists.
INFO: Any empty folders will not be processed, because source and/or destination doesn't have full folder support

Job e999cb77-5296-514c-70bc-50272cd21d95 has started
Log file is located at: /home/cloud/.azcopy/e999cb77-5296-514c-70bc-50272cd21d95.log

INFO: azcopy: A newer version 10.6.0 is available to download

100.0 %, 0 Done, 0 Failed, 1 Pending, 0 Skipped, 1 Total,

Job e999cb77-5296-514c-70bc-50272cd21d95 summary
Elapsed Time (Minutes): 1.3335
Number of File Transfers: 1
Number of Folder Property Transfers: 0
Total Number of Transfers: 1
Number of Transfers Completed: 1
Number of Transfers Failed: 0
Number of Transfers Skipped: 0
TotalBytesTransferred: 136367309312
Final Job Status: Completed

PS /home/cloud>

Consulta il nostro Catalogo Corsi per Tecnologia oppure fai una Ricerca per Vendor o ancora trova uno specifico corso attraverso il motore di ricerca interno: Ricerca Corsi. Contattaci ora al Numero Verde 800-177596, il nostro team saprà supportarti nella scelta del percorso formativo più adatto alla tue esigenze.

RICHIEDI ORA IL SUPPORTO DI UN NOSTRO SPECIALISTA

Il nostro team, da anni impegnato nella progettazione di piani formativi strutturati nell’ambito dell’ IT, ti supporterà ad orientarti verso la scelta di un percorso formativo certificato rispondente alle tue esigenze.