Azure servislerini farklı aboneliğe taşımak

Microsoft Azure’da bir abonelik (subscription) altındaki bir kaynak grubunda (resource group) oluşturan servisleri bir başka abonelik ve kaynak grubuna taşımak gerekebilir. Bir geliştirme ortamında oluşturup çalıştırdığınız servisleri canlı ortama ya da PoC ortamına aktarmak isteyebilirsiniz.

Taşımak istenilen kaynaklar taşıma işlemini desteklemelidir. Desteklenen servislerin listesi aşağıdaki sayfada bulunabilir:

https://docs.microsoft.com/tr-tr/azure/azure-resource-manager/management/move-support-resources

Bunların haricinde, Azure App Services, Azure Devops, ağ (networking) servisleri, kurtarma (recovery) servisleri, sanal makineler (VM) gibi servislerin taşıma sırasında özel durumları vardır. Bu servislerin taşınması sırasında bu özel durumlara dikkat edilmelidir.

Azure’da taşıma işlemi aşağıdaki yollarla yapılabilir:

  • Azure portalı
  • Azure PowerShell
  • Azure CLI
  • REST API

Azure Portalı kullanarak taşıma

Örnek olarak, Azure Test Ortamı aboneliği altında test-rg kaynak grubunda oluşturulan Azure Data Lake Storage Gen2 ve Azure Data Factory servislerinin Microsoft Azure aboneliği altındaki new-rg kaynak grubuna taşındığı durumu inceleyelim. Öncelikle abonelik içinde taşınacak servisler seçilir (1) ve Move menüsünden Move to another subscription‘a tıklanır (2).

Abonelik yerine sadece farklı bir kaynak grubuna taşımak isterseniz Move to anothe resource group‘u seçmeniz gerekir.

Gelen ekranda (Move Resources) taşınacak abonelik (3) ve o abonelik altındaki kaynak grubu (4) seçilir. Eğer yeni bir kaynak grubu oluşturulmak isteniyorsa Create a new group (5) tıklanıp yeni kaynak grubu oluşturulabilir. Son olarak “I understand that tools and scripts associated with moved resources will not work until I update them to use new resource IDs” kurucuğu seçilerek OK’e tıklanır.

Taşıma işleminin başladığına dair bildirim, bildirim alanında görünecektir.

Bu örneğimiz için taşıma süresi 25 dk civarı sürdü. Taşımanın tamamlandığına dair bilgi yine bildirim alanında görüntülenecektir.

Taşıma yaptığımız Microsoft Azure aboneliğine geçiş yapıp kontrol ettiğimizde tmpteststorage1 ve temp-test-df servislerini görebiliriz.

Azure PowerShell kullanarak taşıma

Azure Powershell’de taşıma yapmak için Move-AzResource komutu kullanılır. Aşağıdaki örnek kodda MevcutKG kaynak grubundan YeniKG kaynak grubuna taşıma yapılmıştır:

$webapp = Get-AzResource -ResourceGroupName MevcutKG -ResourceName ExampleSite$plan = Get-AzResource -ResourceGroupName MevcutKG -ResourceName ExamplePlanMove-AzResource -DestinationResourceGroupName YeniKG -ResourceId $webapp.ResourceId, $plan.ResourceId

Azure CLI kullanarak taşıma

PowerShell’e benzer şekilde Azure CLI’da taşıma az resource move komutuyla yapılır. Örnek kod:

webapp=$(az resource show -g OldRG -n ExampleSite --resource-type "Microsoft.Web/sites" --query id --output tsv)plan=$(az resource show -g OldRG -n ExamplePlan --resource-type "Microsoft.Web/serverfarms" --query id --output tsv)az resource move --destination-group newgroup --ids $webapp $plan

REST API kullanarak taşıma

HTTP post örneği:

POST https://management.azure.com/subscriptions/{source-subscription-id}/resourcegroups/{source-resource-group-name}/moveResources?api-version={api-version}

JSON örneği:

{
"resources": ["", ""],
"targetResourceGroup": "/subscriptions//resourceGroups/"
}

Kaynak taşıma işleminin zamanı, taşınan servislere ve bağlımlılıklarına bağlı olarak değişebilir. Azure Resource Manager taşıma işlemi için azami 4 saatlik bir süre tanır ve bu süre içinde taşımayı gerçekleştirmeye çalışır. Taşıma süresince taşınan servisler kilitlenir ve üzerinde bir işlem yapılmasına izin verilmez.