Azure -Copiare Virtual Machine tra Sottoscrizioni Diverse

Il contenuto di questa guida è nato dall’esigenza di poter eseguire la stessa macchina virtuale dove è installato questo blog in un’altra sottoscrizione Azure.

La prima cosa che mi è venuta in mente, senza avere ancora molta dimestichezza con queste operazioni, è che la cosa più semplice da fare sarebbe stato fare il download dal vecchio account del vhd su cui l’istanza della vm era basata e poi fare l’upload dello stesso sul nuovo account e quindi ricreare la macchina virtuale.
Poi ho pensato che magari poteva esistere qualche procedura molto più veloce e mi sono messo a cercare.

Il primo link di interesse trovato sul blog di Microsoft Press era basato su codice powershell, dove in pratica si copia il disco da una sottoscrizione ad un’altra e poi si crea la nuova vm: non l’ho provata ma mi sono ripromesso di farlo.

Se andate a curiosare vedrete che comunque è un procedimento un po’ lungo e quindi ho continuato a cercare qualcosa di più immediato, trovando quindi una pagina sul blog thecodejunkie dove viene presentato il comando AzCopy, che una volta installato mi ha permesso, da riga di comando, di ottenere quello che volevo in modo veloce e pulito.

In pratica, una volta creato nel nuovo account una risorsa Storage e un Container, ho potuto fare la copia del mio vhd da una sottoscrizione ad un’altra, tutto questo senza passare per il download e upload via client: ogni operazione infatti viene fatta lato server (quindi tutto su Azure e la tecnica utilizzata da AzCopy è chiamata Cross Account Copy Blob).

Quello che serve per completare l’operazione sono
percorso del container sorgente
percorso del container destinazione
key storage account sorgente
key storage account destinazione
nome del blob da copiare (nel nostro caso il nome del file vhd)
Il comando è il seguente:

AzCopy /Source:https://.blob.core.windows.net/ /Dest:https://.blob.core.windows.net// /SourceKey: /DestKey: /Pattern:

dove e rappresentano gli storage account sorgente e di destinazione mentre e sono i container sorgente e destinazione del file vhd.

Una volta terminate le operazioni di trasferimento AzCopy restituisce una tabella report.

Se si ha l’esigenza di trasferire tutti i blob contenuti in un container il comando da dare è lo stesso, solo bisogna sostituire a /Pattern: lo switch /S (che esegue il comando di copia in modo ricorsivo.