PowerShell’i kullanarak IaaS kaynaklarını klasik modelden Azure Resource Manager’a geçirme
Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Windows VM'leri
Önemli
Günümüzde IaaS VM'lerinin yaklaşık %90'ı Azure Resource Manager kullanıyor. 28 Şubat 2020 itibarıyla klasik VM'ler kullanımdan kaldırılmıştır ve 6 Eylül 2023'te tamamen kullanımdan kaldırılacaktır. Bu kullanımdan kaldırma ve bunun sizi nasıl etkilediği hakkında daha fazla bilgi edinin.
Bu adımlar, hizmet olarak altyapı (IaaS) kaynaklarını klasik dağıtım modelinden Azure Resource Manager dağıtım modeline geçirmek için Azure PowerShell komutlarını nasıl kullanacağınızı gösterir.
İsterseniz, Azure CLI'yı kullanarak kaynakları da geçirebilirsiniz.
- Desteklenen geçiş senaryolarının arka planı için bkz . IaaS kaynaklarının klasikten Azure Resource Manager'a platform destekli geçişi.
- Ayrıntılı yönergeler ve geçiş kılavuzu için bkz . Klasikten Azure Resource Manager'a platform tarafından desteklenen geçiş hakkında teknik ayrıntılı bilgi.
- En yaygın geçiş hatalarını gözden geçirin.
Geçiş işlemi sırasında adımların yürütülmesi gereken sırayı belirlemek için bir akış çizelgesi aşağıda açıklanmıştır.
1. Adım: Geçiş için planlama
IaaS kaynaklarını klasikten Resource Manager'a geçirip geçirmeyemeyeceğinizi değerlendirirken önerdiğimiz en iyi yöntemlerden birkaçı şunlardır:
- Desteklenen ve desteklenmeyen özellikleri ve yapılandırmaları okuyun. Desteklenmeyen yapılandırmalar veya özellikler kullanan sanal makineleriniz varsa yapılandırma veya özellik desteğinin duyurulmasını bekleyin. Alternatif olarak, gereksinimlerinize uygunsa bu özelliği kaldırın veya geçişi etkinleştirmek için bu yapılandırmadan çıkın.
- Altyapınızı ve uygulamalarınızı bugün dağıtan otomatik betikleriniz varsa, geçiş için bu betikleri kullanarak benzer bir test kurulumu oluşturmayı deneyin. Alternatif olarak, Azure portalını kullanarak örnek ortamlar ayarlayabilirsiniz.
Önemli
Uygulama ağ geçitleri şu anda klasikten Resource Manager'a geçiş için desteklenmemektedir. Uygulama ağ geçidine sahip bir sanal ağı geçirmek için, ağı taşımak için Hazırlama işlemini çalıştırmadan önce ağ geçidini kaldırın. Geçişi tamamladıktan sonra Azure Resource Manager'da ağ geçidini yeniden bağlayın.
Başka bir abonelikteki ExpressRoute bağlantı hatlarına bağlanan Azure ExpressRoute ağ geçitleri otomatik olarak geçirilemiyor. Böyle durumlarda ExpressRoute ağ geçidini kaldırın, sanal ağı geçirin ve ağ geçidini yeniden oluşturun. Daha fazla bilgi için bkz . ExpressRoute bağlantı hatlarını ve ilişkili sanal ağları klasikten Resource Manager dağıtım modeline geçirme.
2. Adım: PowerShell'in en son sürümünü yükleme
Azure PowerShell'i yüklemek için iki ana seçenek vardır: PowerShell Galerisi veya Web Platformu Yükleyicisi (WebPI). WebPI aylık güncelleştirmeler alır. PowerShell Galerisi güncelleştirmeleri sürekli olarak alır. Bu makale, Azure PowerShell sürüm 2.1.0'a dayanır.
Yükleme yönergeleri için bkz . Azure PowerShell'i yükleme ve yapılandırma.
3. Adım: Abonelik için yönetici olduğunuzdan emin olun
Bu geçişi gerçekleştirmek için Azure portalında abonelik için ortak yönetici olarak eklenmelisiniz.
- Azure Portal’ında oturum açın.
- Hub menüsünde Abonelik'i seçin. Bu seçeneği görmüyorsanız Tüm hizmetler'i seçin.
- Uygun abonelik girişini bulun ve ROLÜM alanına bakın. Ortak yönetici için değer Hesap yöneticisi olmalıdır.
Ortak yönetici ekleyemiyorsanız, aboneliğin eklenmesi için bir hizmet yöneticisine veya ortak yöneticiye başvurun.
4. Adım: Aboneliğinizi ayarlama ve geçişe kaydolma
İlk olarak bir PowerShell istemi başlatın. Geçiş için ortamınızı hem klasik hem de Resource Manager için ayarlayın.
Resource Manager modeli için hesabınızda oturum açın.
Connect-AzAccount
Aşağıdaki komutu kullanarak kullanılabilir abonelikleri alın:
Get-AzSubscription | Sort Name | Select Name
Geçerli oturum için Azure aboneliğinizi ayarlayın. Bu örnek, varsayılan abonelik adını Azure Aboneliğim olarak ayarlar. Örnek abonelik adını kendi abonelik adınızla değiştirin.
Select-AzSubscription –SubscriptionName "My Azure Subscription"
Not
Kayıt tek seferlik bir adımdır, ancak geçişi denemeden önce bunu bir kez yapmanız gerekir. Kaydolmadan aşağıdaki hata iletisini görürsünüz:
BadRequest: Abonelik geçiş için kayıtlı değil.
Aşağıdaki komutu kullanarak geçiş kaynağı sağlayıcısına kaydolun:
Register-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate
Kaydın bitmesini beş dakika bekleyin. Aşağıdaki komutu kullanarak onay durumunu denetleyin:
Get-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate
Devam etmeden önce RegistrationState değerinin olduğundan Registered
emin olun.
Klasik dağıtım modeline geçmeden önce, geçerli dağıtımınızın veya sanal ağınızın Azure bölgesinde yeterli Azure Resource Manager sanal makine vCPU'nuz olduğundan emin olun. Azure Resource Manager'da mevcut vCPU sayısını denetlemek için aşağıdaki PowerShell komutunu kullanabilirsiniz. vCPU kotaları hakkında daha fazla bilgi edinmek için bkz . Sınırlar ve Azure Resource Manager.
Bu örnek, Batı ABD bölgesindeki kullanılabilirliği denetler. Örnek bölge adını kendi bölgenizle değiştirin.
Get-AzVMUsage -Location "West US"
Şimdi klasik dağıtım modeli için hesabınızda oturum açın.
Add-AzureAccount
Aşağıdaki komutu kullanarak kullanılabilir abonelikleri alın:
Get-AzureSubscription | Sort SubscriptionName | Select SubscriptionName
Geçerli oturum için Azure aboneliğinizi ayarlayın. Bu örnek, varsayılan aboneliği Azure Aboneliğim olarak ayarlar. Örnek abonelik adını kendi abonelik adınızla değiştirin.
Select-AzureSubscription –SubscriptionName "My Azure Subscription"
5. Adım: IaaS kaynaklarınızı geçirmek için komutları çalıştırma
- Bulut hizmetindeki VM'leri geçirme (sanal ağda değil)
- Sanal ağdaki VM'leri geçirme
- Depolama hesabı geçirme
Not
Burada açıklanan tüm işlemler bir kez etkili olur. Desteklenmeyen bir özellik veya yapılandırma hatası dışında bir sorun yaşıyorsanız hazırlama, durdurma veya işleme işlemini yeniden denemenizi öneririz. Ardından platform eylemi yeniden dener.
Adım 5a: Seçenek 1 - Bulut hizmetinde (sanal ağda değil) sanal makineleri geçirme
Aşağıdaki komutu kullanarak bulut hizmetlerinin listesini alın. Ardından geçirmek istediğiniz bulut hizmetini seçin. Bulut hizmetindeki VM'ler bir sanal ağdaysa veya web veya çalışan rollerine sahipse, komut bir hata iletisi döndürür.
Get-AzureService | ft Servicename
Bulut hizmetinin dağıtım adını alın. Bu örnekte hizmet adı Hizmetim'dir. Örnek hizmet adını kendi hizmet adınızla değiştirin.
$serviceName = "My Service"
$deployment = Get-AzureDeployment -ServiceName $serviceName
$deploymentName = $deployment.DeploymentName
Bulut hizmetindeki sanal makineleri geçiş için hazırlayın. Aralarından seçim yapabileceğiniz iki seçenek vardır.
1. Seçenek: VM'leri platform tarafından oluşturulan bir sanal ağa geçirin.
İlk olarak, aşağıdaki komutları kullanarak bulut hizmetini geçirebileceğinizi doğrulayın:
$validate = Move-AzureService -Validate -ServiceName $serviceName ` -DeploymentName $deploymentName -CreateNewVirtualNetwork $validate.ValidationMessages
Aşağıdaki komut, geçişi engelleyen tüm uyarıları ve hataları görüntüler. Doğrulama iletileri tür hatası iletisi içermiyorsa Hazırlama adımına geçebilirsiniz.
Move-AzureService -Prepare -ServiceName $serviceName ` -DeploymentName $deploymentName -CreateNewVirtualNetwork
2. Seçenek: Resource Manager dağıtım modelinde mevcut bir sanal ağa geçiş yapın.
Bu örnek kaynak grubu adını myResourceGroup, sanal ağ adını myVirtualNetwork ve alt ağ adını mySubNet olarak ayarlar. Örnekteki adları kendi kaynaklarınızın adlarıyla değiştirin.
$existingVnetRGName = "myResourceGroup" $vnetName = "myVirtualNetwork" $subnetName = "mySubNet"
İlk olarak, aşağıdaki komutu kullanarak sanal ağı geçirebileceğinizi doğrulayın:
$validate = Move-AzureService -Validate -ServiceName $serviceName ` -DeploymentName $deploymentName -UseExistingVirtualNetwork -VirtualNetworkResourceGroupName $existingVnetRGName -VirtualNetworkName $vnetName -SubnetName $subnetName $validate.ValidationMessages
Aşağıdaki komut, geçişi engelleyen tüm uyarıları ve hataları görüntüler. Doğrulama iletileri hata içermiyorsa aşağıdaki Hazırlama adımıyla devam edebilirsiniz:
Move-AzureService -Prepare -ServiceName $serviceName -DeploymentName $deploymentName ` -UseExistingVirtualNetwork -VirtualNetworkResourceGroupName $existingVnetRGName ` -VirtualNetworkName $vnetName -SubnetName $subnetName
Hazırlama işlemi önceki seçeneklerden biriyle başarılı olduktan sonra VM'lerin geçiş durumunu sorgulayabilirsiniz. Durumunda Prepared
olduklarından emin olun.
Bu örnek VM adını myVM olarak ayarlar. Örnek adı kendi VM adınızla değiştirin.
$vmName = "myVM"
$vm = Get-AzureVM -ServiceName $serviceName -Name $vmName
$vm.VM.MigrationState
PowerShell'i veya Azure portalını kullanarak hazırlanan kaynakların yapılandırmasını denetleyin. Geçiş için hazır değilseniz ve eski duruma geri dönmek istiyorsanız aşağıdaki komutu kullanın:
Move-AzureService -Abort -ServiceName $serviceName -DeploymentName $deploymentName
Hazırlanan yapılandırma iyi görünüyorsa, aşağıdaki komutu kullanarak ileri gidebilir ve kaynakları işleyebilirsiniz:
Move-AzureService -Commit -ServiceName $serviceName -DeploymentName $deploymentName
Adım 5a: Seçenek 2 - Sanal ağdaki sanal makineleri geçirme
Bir sanal ağdaki sanal makineleri geçirmek için sanal ağı geçirirsiniz. Sanal makineler sanal ağ ile otomatik olarak geçirildi. Geçirmek istediğiniz sanal ağı seçin.
Not
Sanal makinenin VHD (işletim sistemi ve veri) dosyalarını kullanarak Yönetilen Diskler ile yeni bir Resource Manager sanal makinesi oluşturarak klasik dağıtım modeli kullanılarak oluşturulan tek bir sanal makineyi geçirin.
Not
Sanal ağ adı, yeni portalda gösterilenden farklı olabilir. Yeni Azure portalı adı olarak [vnet-name]
görüntüler, ancak gerçek sanal ağ adı türündedir Group [resource-group-name] [vnet-name]
. Geçişi başlatmadan önce komutunu Get-AzureVnetSite | Select -Property Name
kullanarak gerçek sanal ağ adını arayın veya eski Azure portalında görüntüleyin.
Aşağıdaki örnek, sanal ağ adını [resource-group-name] [vnet-name] grubuna ayarlar. Örnek sanal ağ adını yukarıdaki Not bölümünde komutu çalıştırdıktan sonra döndürülen adla değiştirin..
$vnetName = "Group [resource-group-name] [vnet-name]"
Not
Sanal ağ web veya çalışan rolleri ya da desteklenmeyen yapılandırmalara sahip VM'ler içeriyorsa bir doğrulama hata iletisi alırsınız.
İlk olarak, aşağıdaki komutu kullanarak sanal ağı geçirebileceğinizi doğrulayın:
Move-AzureVirtualNetwork -Validate -VirtualNetworkName $vnetName
Aşağıdaki komut, geçişi engelleyen tüm uyarıları ve hataları görüntüler. Doğrulama başarılı olursa aşağıdaki Hazırlama adımıyla devam edebilirsiniz:
Move-AzureVirtualNetwork -Prepare -VirtualNetworkName $vnetName
Azure PowerShell'i veya Azure portalını kullanarak hazırlanan sanal makinelerin yapılandırmasını denetleyin. Geçiş için hazır değilseniz ve eski duruma geri dönmek istiyorsanız aşağıdaki komutu kullanın:
Move-AzureVirtualNetwork -Abort -VirtualNetworkName $vnetName
Hazırlanan yapılandırma iyi görünüyorsa, aşağıdaki komutu kullanarak ileri gidebilir ve kaynakları işleyebilirsiniz:
Move-AzureVirtualNetwork -Commit -VirtualNetworkName $vnetName
5b. Adım: Depolama hesabını geçirme
Sanal makineleri geçirmeyi tamamladıktan sonra, depolama hesaplarını geçirmeden önce aşağıdaki önkoşul denetimlerini gerçekleştirin.
Not
Depolama hesabınızda ilişkili diskler veya VM verileri yoksa doğrudan "Depolama hesaplarını doğrulama ve geçişi başlatma" bölümüne atlayabilirsiniz. Ayrıca klasik disklerin, VM görüntülerinin veya işletim sistemi görüntülerinin silinmesinin depolama hesabındaki kaynak VHD dosyalarını kaldırmadığını unutmayın. Ancak, geçiş sonrasında ARM diskleri veya görüntüleri oluşturmak için yeniden kullanılabilmesi için bu VHD dosyalarındaki kirayı bozar.
Önkoşul, vm'leri geçirip geçirmediğiniz veya depolama hesabınızda disk kaynaklarının olup olmadığını denetler:
Diskleri depolama hesabında depolanan sanal makineleri geçirin.
Aşağıdaki komut, depolama hesabındaki tüm VM disklerinin RoleName ve DiskName özelliklerini döndürür. RoleName, diskin eklendiği sanal makinenin adıdır. Bu komut disk döndürürse, depolama hesabını geçirmeden önce bu disklerin eklendiği sanal makinelerin geçirildiğinden emin olun.
$storageAccountName = 'yourStorageAccountName' Get-AzureDisk | where-Object {$_.MediaLink.Host.Contains($storageAccountName)} | Select-Object -ExpandProperty AttachedTo -Property ` DiskName | Format-List -Property RoleName, DiskName
Depolama hesabında depolanan eklenmemiş VM disklerini silin.
Aşağıdaki komutu kullanarak depolama hesabında eklenmemiş VM disklerini bulun:
$storageAccountName = 'yourStorageAccountName' Get-AzureDisk | where-Object {$_.MediaLink.Host.Contains($storageAccountName)} | Where-Object -Property AttachedTo -EQ $null | Format-List -Property DiskName
Önceki komut disk döndürüyorsa, aşağıdaki komutu kullanarak bu diskleri silin:
Remove-AzureDisk -DiskName 'yourDiskName'
Depolama hesabında depolanan VM görüntülerini silin.
Aşağıdaki komut, depolama hesabında depolanan işletim sistemi disklerine sahip tüm VM görüntülerini döndürür.
Get-AzureVmImage | Where-Object { $_.OSDiskConfiguration.MediaLink -ne $null -and $_.OSDiskConfiguration.MediaLink.Host.Contains($storageAccountName)` } | Select-Object -Property ImageName, ImageLabel
Aşağıdaki komut, depolama hesabında depolanan veri disklerine sahip tüm VM görüntülerini döndürür.
Get-AzureVmImage | Where-Object {$_.DataDiskConfigurations -ne $null ` -and ($_.DataDiskConfigurations | Where-Object {$_.MediaLink -ne $null -and $_.MediaLink.Host.Contains($storageAccountName)}).Count -gt 0 ` } | Select-Object -Property ImageName, ImageLabel
Bu komutu kullanarak önceki komutlar tarafından döndürülen tüm VM görüntülerini silin:
Remove-AzureVMImage -ImageName 'yourImageName'
Depolama hesaplarını doğrulayın ve geçişi başlatın.
Aşağıdaki komutu kullanarak her depolama hesabını geçiş için doğrulayın. Bu örnekte, depolama hesabı adı myStorageAccount şeklindedir. Örnek adı kendi depolama hesabınızın adıyla değiştirin.
$storageAccountName = "myStorageAccount" Move-AzureStorageAccount -Validate -StorageAccountName $storageAccountName
Sonraki adım, depolama hesabını geçiş için hazırlamaktır.
$storageAccountName = "myStorageAccount" Move-AzureStorageAccount -Prepare -StorageAccountName $storageAccountName
Azure PowerShell'i veya Azure portalını kullanarak hazırlanan depolama hesabının yapılandırmasını denetleyin. Geçiş için hazır değilseniz ve eski duruma geri dönmek istiyorsanız aşağıdaki komutu kullanın:
Move-AzureStorageAccount -Abort -StorageAccountName $storageAccountName
Hazırlanan yapılandırma iyi görünüyorsa, aşağıdaki komutu kullanarak ileri gidebilir ve kaynakları işleyebilirsiniz:
Move-AzureStorageAccount -Commit -StorageAccountName $storageAccountName
Sonraki adımlar
- IaaS kaynaklarının klasikten Azure Resource Manager'a platform destekli geçişine genel bakış
- Klasik modelden Azure Resource Manager’a platform destekli geçişe ayrıntılı teknik bakış
- IaaS kaynaklarının Klasik’ten Azure Resource Manager’a geçişini planlama
- IaaS kaynaklarını klasikten Azure Resource Manager'a geçirmek için CLI kullanma
- IaaS kaynaklarının klasikten Azure Resource Manager'a geçirilmesine yardımcı olan topluluk araçları
- En sık karşılaşılan geçiş hatalarını gözden geçirme
- IaaS kaynaklarını klasikten Azure Resource Manager'a geçirme hakkında en sık sorulan soruları gözden geçirin