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 kullanarak kaynakları da geçirebilirsiniz.


Aşağıda, geçiş işlemi sırasında hangi adımların yürütülmesi gerektiğini tanımlayan bir akış çizelgesi yer alır.

Geçiş adımlarını gösteren ekran görüntüsü

1. Adım: Geçişi planlama

IaaS kaynaklarını klasikten Resource Manager geçirip geçirmeyemeyeceğinizi değerlendirirken önerdiğimiz en iyi uygulamalardan 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, geçişi etkinleştirmek için bu özelliği kaldırın veya 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 kullanarak örnek ortamlar ayarlayabilirsiniz.

Önemli

Uygulama ağ geçitleri şu anda klasikten Resource Manager geçiş için desteklenmemektedir. Uygulama ağ geçidine sahip bir sanal ağı geçirmek için, ağı taşımak üzere bir Hazırlama işlemi çalıştırmadan önce ağ geçidini kaldırın. Geçişi tamamladıktan sonra Azure Resource Manager'de 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 yüklemek için iki ana seçenek vardır: PowerShell Galerisi veya Web Platformu Yükleyicisi (WebPI). WebPI aylık güncelleştirmeleri alır. PowerShell Galerisi güncelleştirmeleri sürekli olarak alır. Bu makale Azure PowerShell 2.1.0 sürümünü temel alır.

Yükleme yönergeleri için bkz. Azure PowerShell 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 abonelik için ortak yönetici olarak eklenmelisiniz.

  1. Azure Portal’ında oturum açın.
  2. Hub menüsünde Abonelik'i seçin. Bu seçeneği görmüyorsanız Tüm hizmetler'i seçin.
  3. 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, abonelik için bir hizmet yöneticisine veya ortak yöneticiye başvurarak kendinizin eklenmesini sağlayın.

4. Adım: Aboneliğinizi ayarlama ve geçiş için kaydolma

İlk olarak bir PowerShell istemi başlatın. Geçiş için ortamınızı hem klasik hem de Resource Manager 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. Kaydetmeden aşağıdaki hata iletisini görürsünüz:

BadRequest: Abonelik geçiş için kaydedilmedi.

Aşağıdaki komutu kullanarak geçiş kaynak 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'de sahip olduğunuz geçerli 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

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 uyarıları ve hataları görüntüler. Doğrulama iletileri hata türünde bir ileti 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 örnekte kaynak grubu adı myResourceGroup, sanal ağ adı myVirtualNetwork, alt ağ adı ise mySubNet olarak ayarlanır. Ö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 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 olduklarından Prepared 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 veya Azure portal 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 ileriye 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ündedirGroup [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 görüntüleyin.

Aşağıdaki örnek, sanal ağ adını [resource-group-name][vnet-name] Grubu olarak 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 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 veya Azure portal 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 ileriye 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ı 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 veya Azure portal 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 ileriye gidebilir ve kaynakları işleyebilirsiniz:

        Move-AzureStorageAccount -Commit -StorageAccountName $storageAccountName
    

Sonraki adımlar