Donnerstag , 21 März 2019

Azure Storage Account (Classic) nach Azure Resource Manager (ARM) migrieren

Azure Storage Account (Classic) nach Azure Resource Manager (ARM) migrierenAm vergangenen Wochenende wollte ich endlich mal meine private Azure Subscription aufräumen, die ich seit vielen Jahren für meine Community Projekte nutze. Dabei bin ich über ein Problem mit den "alten" Storage Accounts gestolpert, dass sich durch eine Migration auf ARM beheben lässt.
Deshalb möchte ich in diesem Blog Post beschreiben, wie man ein Azure Storage Account (Classic) auf den Azure Resource Manager (ARM) migrieren kann.

Wo lag eigentlich das Problem?

Nachdem sich in meiner ältesten Azure Subscription doch einige Altlasten über die letzten Jahre angesammelt hatten, wollte ich am vergangenen Wochenende endlich mal Ordnung schaffen.
Dazu nahm ich mir als erstes die "Default-…" Ressourcegruppen vor.
Kurzum die Dienste, die noch mit den alten ASM APIs erstellt worden sind.

Einige der darin befindlichen Dienste, wollte ich in neue Ressourcegruppen umziehen…
Move to another resource group

 

Bei diesem Vorhaben, bin ich allerdings über die Meldung "Resource that cannot be moved" gestolpert…
Resource that cannot be moved

Das Ganze brachte mich auf die Frage:
Kann man eigentlich ein klassisches Azure Storage Account nach ARM migrieren?
Ein wenig Nachforschung zeigte schnell:
Ja, das geht.

Dazu müssen, wie so oft, die PowerShell Cmdlets für Azure installiert sein.

 

Registrierung des Azure Resource Providers

Zuerst öffnet man das PowerShell Eingabefenster und loggt man sich in die entsprechende Azure Subscription für den Azure Resource Manager ein…

Login-AzureRmAccount
Select-AzureRmSubscription -SubscriptionName "<Name der Subscription>"

Anschließend muss der entsprechende Azure Resource Provider registriert werden…

Register-AzureRmResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

Die Registrierung passiert dann asynchron im Hintergrund.
Um zu sehen, wann dies beendet ist, kann folgender Befehl ausgeführt werden…

Get-AzureRmResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

Sobald der Azure Resource Provider registriert ist, kann mit der Migration losgelegt werden…
Azure PowerShell Provider is registered

 

Migration des Azure Storage Accounts

Beim Azure Resource Manager hatte wir uns ja bereits für die Provider Registrierung angemeldet.
Jetzt muss man noch das Gleiche bei den klassischen ASM APIs machen…

Add-AzureAccount
Select-AzureSubscription -SubscriptionName "<Name der Subscription>"

Zur Kontrolle noch ein kurzer Blick in das Azure Portal und los gehts…
Azure Portal - Storage Accounts (classic)

Die Migration läuft in zwei Schritten ab.
In Schritt Eins muss das entsprechende Storage Account mit folgendem Befehl vorbereitet werden…

Move-AzureStorageAccount -Prepare -StorageAccountName "saschadittmann"

Das dauert einen Moment und sollte mit folgender Meldung quittiert werden…
Azure Storage Account (Prepared)

Eine erneute Kontrolle im Azure Portal zeigt, dass jetzt zwei Azure Storage Accounts mit dem gleichem Namen existieren.
Das neue Azure Storage Account wurde außerdem in einer eigenen bzw. neuen Ressourcegruppe hinzugefügt.
Azure Portal - Storage Accounts (Both)

Jetzt sollte man ausführlich prüfen, ob man mit dem Migrationsergebnis zufrieden ist.

Wenn ja, kann man mit Schritt Zwei die Migration abschließen…

Move-AzureStorageAccount -Commit -StorageAccountName "saschadittmann"

… oder rückgängig machen …

Move-AzureStorageAccount -Abort -StorageAccountName "saschadittmann"

Auch das wird wieder entsprechend von PowerShell quittiert.

Azure Storage Account (Committed)

Im Azure Portal sollte jetzt auch nur das neue Storage Account zu sehen sein…
Azure Portal - Storage Accounts (New)

Zu guter Letzt kann das neue Storage Account im Azure Portal, oder auch via PowerShell, umgezogen werden…

Get-AzureRmResource -ResourceType "Microsoft.Storage/storageAccounts" `
                    -ResourceName "saschadittmann"  `
                    -ResourceGroupName "saschadittmann-Migrated" `
| Move-AzureRmResource -DestinationResourceGroupName "saschadittmann"

Azure Storage Account moved to new Resource Group