Azure Stack Hub abonelik çoğaltıcısını kullanarak kaynakları çoğaltma

Kaynakları Azure Stack Hub abonelikleri arasında, Azure Stack Hub damgaları arasında veya Azure Stack Hub ile Azure arasında kopyalamak için Azure Stack Hub abonelik çoğaltıcısı PowerShell betiğini kullanabilirsiniz. Çoğaltıcı betiği, farklı Azure ve Azure Stack Hub aboneliklerindeki Azure Resource Manager kaynaklarını okur ve yeniden oluşturur. Bu makalede betiğin nasıl çalıştığı, betiği nasıl kullanabileceğiniz ve betik işlemleri için bir başvuru sağlanır.

Bu makalede kullanılan betikleri Azure Akıllı Uç Desenleri GitHub deposunda bulabilirsiniz. Betikler abonelik çoğaltıcı klasöründedir.

Abonelik çoğaltıcıya genel bakış

Azure aboneliği çoğaltıcısı modüler olacak şekilde tasarlanmıştır. Bu araç, kaynak çoğaltmayı düzenleyen bir çekirdek işlemci kullanır. Buna ek olarak, araç farklı kaynak türlerini kopyalamak için şablon işlevi görür özelleştirilebilir işlemcileri destekler.

Çekirdek işlemci aşağıdaki üç betikten oluşur:

  • resource_retriever.ps1

    • Çıkış dosyalarını depolamak için klasörler oluşturur.

    • Bağlamı kaynak aboneliğe ayarlar.

    • Kaynakları alır ve resource_processor.ps1ile birlikte iletir.

  • resource_processor.ps1

    • resource_retriever.ps1tarafından geçirilen kaynağı işler.

    • Hangi özelleştirilmiş işlemcinin kullanılacağını belirler ve kaynakları geçirir.

  • post_process.ps1

    • Post, özelleştirilmiş işlemci tarafından oluşturulan çıkışı işleyerek hedef aboneliğe dağıtılmaya hazırlar.

    • Hedef abonelikteki kaynakları dağıtmak için dağıtım kodu oluşturur.

Üç betik, daha fazla esneklik sağlamak için bilgi akışını standart bir şekilde denetler. Örneğin ek kaynaklar için destek eklemek için çekirdek işlemcideki herhangi bir kodu değiştirmeniz gerekmez.

Yukarıda bahsedilen özelleştirilmiş işlemciler ps1 , belirli bir kaynak türünün nasıl işlenmesi gerektiğini belirleyen dosyalardır. Özelleştirilmiş işlemcinin adı her zaman kaynaktaki tür verileri kullanılarak adlandırılır. Örneğin, çalıştıran $vmbir sanal makine nesnesi barındırdığını varsayarsak$vm. Türü değerini verirMicrosoft.Compute/virtualMachines. Başka bir deyişle, bir sanal makinenin işlemcisi olarak adlandırılacaktır virtualMachines_processor.ps1. Bu, çekirdek işlemcinin hangi özelleştirilmiş işlemciyi kullanacağını belirleme şekli olduğundan, adın kaynak meta verilerinde göründüğü gibi olması gerekir.

Özelleştirilmiş işlemci, hangi bilgilerin önemli olduğunu belirleyerek ve bu bilgilerin kaynak meta verilerinden nasıl çekilmesi gerektiğini belirleyerek kaynağın nasıl çoğaltılması gerektiğini belirler. Özelleştirilmiş işlemci daha sonra ayıklanan tüm verileri alır ve kaynağı hedef aboneliğe dağıtmak için bir Azure Resource Manager şablonuyla birlikte kullanılacak bir parametre dosyası oluşturmak için kullanır. Bu parametre dosyası , post_process.ps1 tarafından işlendikten sonra Parameter_Files depolanır.

Çoğaltıcı dosya yapısında Standardized_ARM_Templates adlı bir klasör vardır. Kaynak ortama bağlı olarak, dağıtımlar bu standartlaştırılmış Azure Resource Manager şablonlarından birini kullanır veya özelleştirilmiş bir Azure Resource Manager şablonunun oluşturulması gerekir. Bu durumda, özelleştirilmiş bir işlemcinin Azure Resource Manager şablon oluşturucusunda çağrı yapması gerekir. Daha önce başlatılan örnekte, sanal makineler için bir Azure Resource Manager şablon oluşturucusunun adı virtualMachines_ARM_Template_Generator.ps1olarak adlandırılacaktır. Azure Resource Manager şablon oluşturucu, kaynağın meta verilerinde bulunan bilgilere göre özelleştirilmiş bir Azure Resource Manager şablonu oluşturmakla sorumludur. Örneğin, sanal makine kaynağında bir kullanılabilirlik kümesinin üyesi olduğunu belirten meta veriler varsa, Azure Resource Manager şablon oluşturucu, sanal makinenin parçası olduğu kullanılabilirlik kümesinin kimliğini belirten kodla bir Azure Resource Manager şablonu oluşturur. Bu şekilde, sanal makine yeni aboneliğe dağıtıldığında otomatik olarak dağıtım sırasında kullanılabilirlik kümesine eklenir. Bu özelleştirilmiş Azure Resource Manager şablonları, Standardized_ARM_Templates klasörünün içinde bulunan Custom_ARM_Templates klasöründe depolanır. post_processor.ps1, bir dağıtımın standartlaştırılmış bir Azure Resource Manager şablonu mu yoksa özelleştirilmiş bir şablon mu kullanması gerektiğini belirlemek ve karşılık gelen dağıtım kodunu oluşturmakla sorumludur.

Betik post-process.ps1 parametre dosyalarını temizlemek ve kullanıcının yeni kaynakları dağıtmak için kullanacağı betikleri oluşturmakla sorumludur. Temizleme aşamasında betik, kaynak abonelik kimliğine, kiracı kimliğine ve konuma yapılan tüm başvuruları ilgili hedef değerlerle değiştirir. Ardından parametre dosyasını Parameter_Files klasörüne aktarır. Ardından, işlenen kaynağın özelleştirilmiş bir Azure Resource Manager şablonu kullanıp kullanmadığını belirler ve New-AzResourceGroupDeployment cmdlet'ini kullanan ilgili dağıtım kodunu oluşturur. Dağıtım kodu daha sonra Deployment_Files klasöründe depolanan DeployResources.ps1 adlı dosyaya eklenir. Son olarak betik, kaynağın ait olduğu kaynak grubunu belirler ve DeployResourceGroups.ps1 betiğini denetler ve bu kaynak grubunu dağıtmak için dağıtım kodunun zaten mevcut olup olmadığını denetler. Bunu yapmazsa, kaynak grubunu dağıtmak için bu betike kod ekler, bunu yaparsa hiçbir şey yapmaz.

Dinamik API alma

Araç, kaynak abonelikte kullanılabilen en yeni kaynak sağlayıcısı API sürümünün hedef abonelikteki kaynakları dağıtmak için kullanılması için yerleşik dinamik API alma özelliğine sahiptir:

Figure API retrieval

resource_processor.ps1'de API alma şekli.

Ancak, hedef aboneliğin kaynak sağlayıcısı API sürümünün kaynak aboneliğin sürümünden daha eski olma ve kaynak abonelikten sağlanan sürümü desteklememe olasılığı vardır. Bu durumda, dağıtım çalıştırıldığında bir hata oluşturulur. Bu sorunu çözmek için hedef abonelikteki kaynak sağlayıcılarını kaynak aboneliktekilerle eşleşecek şekilde güncelleştirin.

Paralel dağıtımlar

Araç için parallel adlı bir parametre gerekir. Bu parametre, alınan kaynakların paralel olarak dağıtılıp dağıtılmayacağını belirten bir boole değeri alır. Değer true olarak ayarlanırsa ,New-AzResourceGroupDeployment çağrısının -asJob bayrağı olur ve paralel işlerin bitmesini beklemek için kod blokları, kaynak türlerine göre kaynak dağıtım kümeleri arasına eklenir. Bir türdeki tüm kaynakların bir sonraki kaynak türü dağıtılmadan önce dağıtılmasını sağlar. Paralel parametre değeri false olarak ayarlanırsa, kaynakların tümü seri olarak dağıtılır.

Ek kaynak türleri ekleme

Yeni kaynak türleri eklemek kolaydır. Geliştiricinin özelleştirilmiş bir işlemci ve Azure Resource Manager şablonu veya Azure Resource Manager şablon oluşturucu oluşturması gerekir. Bu işlem tamamlandıktan sonra geliştiricinin kaynak türünü $resourceType parametresi için ValidateSet'e ve resource_retriever.ps1'daki $resourceTypes dizisine eklemesi gerekir. Kaynak türü $resourceTypes dizisine eklenirken doğru sırada eklenmesi gerekir. Dizinin sırası, kaynakların dağıtılacağı sırayı belirler, bu nedenle bağımlılıkları göz önünde bulundurun. Son olarak, özelleştirilmiş işlemci bir Azure Resource Manager şablon oluşturucu kullanıyorsa, kaynak türü adınıpost_process.ps1 içindeki $customTypes dizisine eklemesi gerekir.

Azure aboneliği çoğaltıcısını çalıştırma

Azure abonelik çoğaltıcısı (v3) aracını çalıştırmak için tüm parametreleri sağlayarak resource_retriever.ps1 başlatmanız gerekir. resourceType parametresinde, bir kaynak türü yerine Tümü seçeneğini belirleme seçeneği vardır. Tümü seçilirse, resource_retriever.ps1 tüm kaynakları sırayla işler ve böylece dağıtım çalıştırıldığında önce bağımlı kaynaklar dağıtılır. Örneğin, sanal makinelerin düzgün dağıtılması için bir sanal ağın yerinde olmasını gerektirdiği için sanal makineler sanal makinelerden önce dağıtılır.

Betiğin yürütülmesi tamamlandığında, Deployment_Files, Parameter_Files ve Custom_ARM_Templates olmak üzere üç yeni klasör olacaktır.

Not

Oluşturulan betiklerden herhangi birini çalıştırmadan önce doğru ortamı ayarlamanız ve hedef abonelikte (örneğin yeni Azure Stack Hub'da) oturum açmalı ve çalışma dizinini Deployment_Files klasörüne ayarlamalısınız.

Deployment_Files DeployResourceGroups.ps1 ve DeployResources.ps1iki dosya barındıracaktır. DeployResourceGroups.ps1 yürütülürken kaynak grupları dağıtılır. DeployResources.ps1 yürütülürken işlenen tüm kaynaklar dağıtılır. Aracın kaynak türü olarak All veya Microsoft.Compute/virtualMachines ile yürütülmesi durumunda, DeployResources.ps1 kullanıcıdan tüm sanal makineleri oluşturmak için kullanılacak bir sanal makine yöneticisi parolası girmesini ister.

Örnek

  1. Betiği çalıştırın.

    Run the script

    Not

    PS örneği için kaynak çıkarma ve abonelik bağlamını yapılandırmayı unutmayın.

  2. Yeni oluşturulan klasörleri gözden geçirin:

    Review the folders

  3. Bağlamı hedef aboneliğe ayarlayın, klasörü Deployment_Files olarak değiştirin, kaynak gruplarını dağıtın (DeployResourceGroups.ps1 betiğini çalıştırın) ve ardından kaynak dağıtımını başlatın (DeployResources.ps1 betiğini çalıştırın).

    Configure and start the deployment

  4. Durumu denetlemek için komutunu çalıştırın Get-Job . Get-Job | Receive-Job sonuçları döndürür.

Temizleme

replicatorV3 klasörünün içinde cleanup_generated_items.ps1 adlı bir dosya vardır; Deployment_Files, Parameter_Files ve Custom_ARM_Templates klasörleri ve bunların tüm içeriğini kaldırır.

Abonelik çoğaltıcı işlemleri

Azure aboneliği çoğaltıcısı (v3) şu anda aşağıdaki kaynak türlerini çoğaltabilir:

  • Microsoft.Compute/availabilitySets

  • Microsoft.Compute/virtualMachines

  • Microsoft.Network/loadBalancers

  • Microsoft.Network/networkSecurityGroups

  • Microsoft.Network/publicIPAddresses

  • Microsoft.Network/routeTables

  • Microsoft.Network/virtualNetworks

  • Microsoft.Network/virtualNetworkGateways

  • Microsoft. Depolama/storageAccounts

Aracı kaynak türü olarak Tümü ile çalıştırırken, çoğaltma ve dağıtım sırasında aşağıdaki sıra izlenir (aşağıda, tüm kaynakların yapılandırması çoğaltılmış, örneğin sku, teklif vb.):

  • Microsoft.Network/virtualNetworks

    • Çoğaltmalar: - Tüm adres alanları - Tüm alt ağlar
  • Microsoft.Network/virtualNetworkGateways

    • Çoğaltmalar: - Genel IP yapılandırması - Alt ağ yapılandırması - VPN türü - Ağ geçidi türü
  • Microsoft.Network/routeTables

  • Microsoft.Network/networkSecurityGroups

    • Çoğaltmalar: - Gelen ve giden tüm güvenlik kuralları
  • Microsoft.Network/publicIPAddresses

  • Microsoft.Network/loadBalancers

    • Çoğaltmalar: - Özel IP adresleri - Genel IP adresi yapılandırması - Alt ağ yapılandırması
  • Microsoft.Compute/availabilitySets

    • Çoğaltmalar: - Hata etki alanlarının sayısı - Güncelleştirme etki alanlarının sayısı
  • Microsoft. Depolama/storageAccounts

  • Microsoft.Compute/virtualMachines

    • Çoğaltır:
      - Veri diskleri (veri olmadan)
      - Sanal makine boyutu
      - İşletim sistemi
      - Tanılama depolama hesabı yapılandırması
      - Genel IP yapılandırması
      - Ağ Arabirimi
      - Ağ Arabirimi özel IP adresi
      - Ağ Güvenlik Grubu yapılandırması
      - Kullanılabilirlik kümesi yapılandırması

Not

Yalnızca işletim sistemi diskleri ve veri diskleri için yönetilen diskler oluşturur. Şu anda depolama hesaplarını kullanma desteği yoktur

Sınırlamalar

Hedef aboneliğin kaynak sağlayıcıları kaynak abonelikten çoğaltılmakta olan tüm kaynakları ve seçenekleri desteklediği sürece, araç kaynakları bir abonelikten diğerine çoğaltabilir.

Çoğaltmanın başarılı olmasını sağlamak için hedef aboneliğin kaynak sağlayıcısı sürümlerinin kaynak aboneliğin sürümleriyle eşleştiğinden emin olun.

Ticari Azure'dan ticari Azure'a veya Azure Stack Hub'ın içindeki bir abonelikten aynı Azure Stack Hub içindeki başka bir aboneliğe çoğaltma yaparken depolama hesapları çoğaltılırken sorunlar olacaktır. Bunun nedeni, depolama hesabı adlandırma gereksiniminin tüm depolama hesabı adlarının tüm ticari Azure'da veya bir Azure Stack Hub bölgesindeki/örneğindeki tüm aboneliklerde benzersiz olmasıdır. Stack'ler ayrı bölgeler/örnekler olduğundan depolama hesaplarını farklı Azure Stack Hub örnekleri arasında çoğaltma işlemi başarılı olur.

Sonraki adımlar

Azure Stack Hub ağıyla ilgili farklılıklar ve dikkat edilmesi gerekenler