Son zamanlarda yoğun olarak uğraştığım ve uzun uğraşlar gerektiren bir konu olan Azure taşıma işlemlerini makale olarak dikkat edilmesi gereken durumları da belirtip kaleme almak istedim. Umarım herkes için faydalı ve yararlanacağı birer kaynak olurlar.
Bildiğiniz gibi Azure üzerinde farklı subscription modelleri bulunuyor. Bu modeller Azure’un satın alınma biçimine göre genelde farklılık gösterir. Bu bağlamda subscriptionlar Pay-as-you-go, Enterprise Aggrement ve CSP(Cloud Solution Pbrovider) olarak bir kaç modele ayrılır.
Tabi bu modellerdeki subscription’larda desteklenen Azure servisleri de farklılık gösterebilir ancak %95 oranında aynı servisleri barındırırlar.
İşim gereği bazı durumlarda bu subscription’lar içerisindeki resource grouplar arasında yada direk subscription’lar arasında taşıma yapmak durumunda kalabiliyoruz.
Subscription’lar arasında fiyatsal farklılıklar da bulunuyor. Bu sebeple kurumlar örneğin kendi kredi kartı ile pay-as-you-go olarak aldığı subscription’ı CSP subscription’a yada EA bir subscription’a taşımak isteyebiliyorlar.
Böyle durumlarda taşıma işlemi kolay bir işlemmiş gibi görünsede (Azure portal üzerindeki move seçeneğinden dolayı) maalesef tüm bileşenler bu şekilde move edilemiyor.
Taşınamayan bileşenlerin listesi özet olarak aşağıdaki gibidir.
Taşıma işlemleri sırasında kaynak ve hedef resource group’lar yazma ve silme işlemlerine karşı kilitlenir. Taşıma tamamlandıktan sonra tekrar normale dönerler.
Taşıma işlemleri sırasında taşınan
kaynağın lokasyonu hiç bir şekilde değişmez. Resource group farklı bir lokasyonda olabilir. Ancak kaynak kesinlikle aynı lokasyonda kalacaktır.
Taşıma işlemlerini yapmadın önce yapılması gereken bir kaç check list bulunmaktadır. Bunlar sırası ile aşağıdaki gibidir;
(Get-AzureRmSubscription -SubscriptionName <your-source-subscription>).TenantId
(Get-AzureRmSubscription -SubscriptionName <your-destination-subscription>).TenantId
Eğer iki subscription’a ait tenant ID’leri farklı ise yapılması gereken işlem Azure subscription’ın tenant’lar arasında transfer edilmesi işlemidir. Bunun işlem için aşağıdaki kaynaklardan faydalanabilir siniz.
https://docs.microsoft.com/th-th/azure/billing/billing-subscription-transfer
“subscription is not registered for a resource type” Bu durumu düzeltmek için aşağıdaki komutları sırası ile kullanmak yeterli olacaktır.
Subscription’a ait registration durumunu öğrenmek için aşağıdaki komutu kullanabilirsiniz.
Set-AzureRmContext -Subscription <destination-subscription–name-or-id>
Get-AzureRmResourceProvider -ListAvailable | Select-Object ProviderNamespace, RegistrationState
Registration işlemi içinde komutu aşağıdaki şekildeki gibi çalıştırabilirsiniz.
Register-AzureRmResourceProvider -ProviderNamespace Microsoft.Batch
Taşıma işlemlerinde bizim için önemli bazı kaynaklara ilişkin sınırlılıkları biraz daha ayrıntılı inceleyelim. Taşıma sırasında bu kaynaklar özelinde yapmamız gerekenlere biraz daha ayrıntılı göz atalım;
Sanal Makine Sınırlılıkları
Tabi söz konusu taşıma olduğunda en önemli bileşenlerden birisi de kuşkusuz sanal makinelerdir. Bu taşıma işlemlerinde sanal makinelerde yaşadığım en büyük sıkıntı makinenin disklerinin yönetilen disk (managed) olarak yapılandırılmış olmasıdır. Bu dumuma bağlı olarak aşağıdaki şekilde managed disk’e bağlı kaynakları taşıyamıyoruz.
Buna ek olarak market place üzerindeki belli kaynaklara bağlı olarak oluşturulan sanal makineler de yine taşınamayan bileşenler arasındadır.
Eğer taşınacak sanal makine key vault içerisinde bir sertifikayı kullanıyor ise, sanal makine ayrı subscription içerisinde farklı bir resource group’a taşınabilir fakat farklı subscription’a taşınamaz.
Virtual Network Sınırlılıkları
Eğer ortamda peer edilmiş virtual network’ler var ise öncelikle bu peering’in disable edilmesi gerekir. Ardından taşıma işlemi sorunsuz olrak gerçekleşecektir. Taşımanın ardından peering tekrar enable edilerek taşıma tamamlanacaktır.
Eğer virtual network içerisinde resource navigation link’e sahip bir subnet var ise taşıma yapılamaz. (Redis cache kullanılan senaryolarda rastlanır)
App Service Sınırlılıkları
Subscription içerisinde App service bulunuyor ise ve taşınacaksa bunu iki farklı senaryoda ele almak gerekir.
Eğer aynı subscription içerisinde taşıma yapılacaksa SSL sertifika taşınamaz. Yapılacak işlem sertifikanın silinip web app’in taşınması, ardından sertifikanın tekrardan upload edilmesi işlemidir.
Eğer web app farklı subscription üzerindeki bir resource group’a taşınacak ise hedef resource group aşağıdaki bileşenleri içermemelidir.
Ek olarak resource group içerisindeki tüm app service kaynakları birlikte taşınmalıdır. Ayrıca app service resource’ları taşınırken tüm taşınacak bileşenler orjinal olarak oluşturuldukları resource group’a taşınmalı ve bu resource group ile taşıma işlemi yapılmalıdır.
Recovery Service Sınırlılıkları
Taşıma sırasında en çok sorun yaşatan bileşenlerden birisi de recovery service bileşenidir. Çoğu zaman Azure sanal makineleri için backup yapılandırması yaptığımızda taşıma işlemleri sırasında sanal makinenin taşınamayacağına ilişkin hata alırız. Bu durumu aşmak için sırası ile aşağıdaki işlemlerin yapılması gerekir. Bu işlem aynı subscription içerisinde farklı resource grouplar arasında geçerlidir.
Eğer vm farklı subscription’lar arasında taşınacak ise ilk iki madde yine aynı olacaktır. Fakat 3. madde recovery service vault’un cross-subscription-backup desteğinin olmamasından ötürü desteklenmeyecektir.
Bu bölümde sınırlılıklardan ve bu sınırlılıkların nasıl aşılabileceğinden bahsetmiş olduk. Bir sonraki bölümde taşıma işlemleri ile devam edeceğim.
Görüşmek üzere.
Bu konuyla ilgili sorularınızı http://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.
Referanslar
https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-move-resources
Fırat
TAGs: Azure ARM, Azure Resource Manager Move Process, Azure ARM Move, Move Azure Resource to another subscription,Azure resource copy, Move ASM to ARM, Azure Resource Manager Powershell, Azure ARM Move limitation,ARM Infrastructure
Sakarya doğumludur. İstanbul Üniversitesi’nde Matematik/Fen ve Teknoloji öğretmenliğini bitirmiştir. Yüksek lisansını Sakarya Üniversitesi Bilgisayar Mühendisliği’nde yapmıştır. Bilişim sektöründe çeşitli firmalarda sistem ve network sorumlusu olarak çalışmıştır. Bazı kurumlarda sistem ve network üzerine uzmanlık eğitimleri vermiştir. Şu anda Netaş şirketinde kurumsal danışman olarak görev yapmaktadır. Microsoft System Center ürünleri, Powershell ve Azure teknolojileri ile ilgilenmektedir. 2016 yılında Microsoft tarafından Cloud and Datacenter alanında MVP unvanını almıştır.