Aracılığıyla paylaş


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.


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.

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

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.

  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, 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

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