Replikace prostředků pomocí replikátoru předplatného služby Azure Stack Hub

Skript PowerShellu replikátoru předplatného služby Azure Stack Hub můžete použít ke kopírování prostředků mezi předplatnými služby Azure Stack Hub, mezi kolky služby Azure Stack Hub nebo mezi službou Azure Stack Hub a Azure. Skript replikátoru přečte a znovu sestaví prostředky Azure Resource Manager z různých předplatných Azure a Služby Azure Stack Hub. Tento článek se zabývá tím, jak skript funguje, jak ho můžete používat, a poskytuje referenční informace o operacích se skripty.

Skripty použité v tomto článku najdete v úložišti GitHubu Azure Intelligent Edge Patterns . Skripty jsou ve složce replikátoru předplatného .

Přehled replikátoru předplatného

Replikátor předplatného Azure byl navržen tak, aby byl modulární. Tento nástroj používá procesor jádra, který orchestruje replikaci prostředků. Kromě toho nástroj podporuje přizpůsobitelné procesory, které fungují jako šablony pro kopírování různých typů prostředků.

Základní procesor se skládá z následujících tří skriptů:

  • resource_retriever.ps1

    • Generuje složky pro ukládání výstupních souborů.

    • Nastaví kontext zdrojového předplatného.

    • Načte prostředky a předá je resource_processor.ps1.

  • resource_processor.ps1

    • Zpracuje prostředek předaný resource_retriever.ps1.

    • Určuje, který přizpůsobený procesor se má použít, a předá prostředky.

  • post_process.ps1

    • Post zpracuje výstup vygenerovaný přizpůsobeným procesorem a připraví ho k nasazení v cílovém předplatném.

    • Vygeneruje kód nasazení pro nasazení prostředků v cílovém předplatném.

Tyto tři skripty řídí tok informací standardním způsobem, aby bylo možné zajistit větší flexibilitu. Přidání podpory pro další prostředky například nevyžaduje, abyste měnil kód v základním procesoru.

Přizpůsobené procesory, které byly zmíněny výše, jsou ps1 soubory, které určují, jak se má určitý typ prostředku zpracovat. Název vlastního procesoru se vždy jmenuje pomocí typových dat v prostředku. Předpokládejme například, že $vm obsahuje objekt virtuálního počítače, na kterém běží $vm. Typ by vynesl Microsoft.Compute/virtualMachines. To znamená, že procesor pro virtuální počítač by měl mít název virtualMachines_processor.ps1, název musí být přesně tak, jak se zobrazuje v metadatech prostředku, protože takto procesor jádra určuje, který přizpůsobený procesor se má použít.

Přizpůsobený procesor určuje, jak se má prostředek replikovat, tím, že určí, jaké informace jsou důležité, a diktuje, jak se mají informace vytáhnout z metadat prostředku. Přizpůsobený procesor pak vezme všechna extrahovaná data a použije je k vygenerování souboru parametrů, který se použije ve spojení se šablonou Azure Resource Manager k nasazení prostředku v cílovém předplatném. Tento soubor parametrů je uložen v Parameter_Files po jeho následném zpracování post_process.ps1.

Ve struktuře souborů replikátoru je složka s názvem Standardized_ARM_Templates. V závislosti na zdrojovém prostředí budou nasazení používat jednu z těchto standardizovaných šablon Azure Resource Manager, nebo bude nutné vygenerovat přizpůsobenou šablonu Azure Resource Manager. V takovém případě musí přizpůsobený procesor volat generátor šablon Azure Resource Manager. V příkladu zahájeném dříve by se název generátoru šablon Azure Resource Manager pro virtuální počítače jmenoval virtualMachines_ARM_Template_Generator.ps1. Generátor šablon Azure Resource Manager zodpovídá za vytvoření přizpůsobené šablony Azure Resource Manager na základě informací v metadatech prostředku. Pokud například prostředek virtuálního počítače obsahuje metadata určující, že je členem skupiny dostupnosti, generátor šablon Azure Resource Manager vytvoří šablonu Azure Resource Manager s kódem určujícím ID skupiny dostupnosti, do které virtuální počítač patří. Virtuální počítač se tak při nasazení do nového předplatného automaticky přidá do skupiny dostupnosti při nasazení. Tyto přizpůsobené šablony Azure Resource Manager jsou uložené ve složce Custom_ARM_Templates umístěné ve složce Standardized_ARM_Templates. post_processor.ps1 zodpovídá za určení, jestli má nasazení používat standardizovanou šablonu Azure Resource Manager, nebo přizpůsobenou šablonu, a za vygenerování odpovídajícího kódu nasazení.

Skript post-process.ps1 zodpovídá za vyčištění souborů parametrů a vytvoření skriptů, které uživatel použije k nasazení nových prostředků. Během fáze čištění skript nahradí všechny odkazy na ID zdrojového předplatného, ID tenanta a umístění odpovídajícími cílovými hodnotami. Potom vypíše soubor parametrů do složky Parameter_Files . Pak určí, jestli zpracovávaný prostředek používá přizpůsobenou šablonu Azure Resource Manager, nebo ne, a vygeneruje odpovídající kód nasazení, který využívá rutinu New-AzResourceGroupDeployment. Kód nasazení se pak přidá do souboru s názvem DeployResources.ps1 uloženého ve složce Deployment_Files . Nakonec skript určí skupinu prostředků, do které prostředek patří, a zkontroluje DeployResourceGroups.ps1 skript, aby zjistil, jestli kód nasazení pro nasazení této skupiny prostředků již existuje. Pokud ne, přidá do skriptu kód pro nasazení skupiny prostředků. Pokud ano, pak nic neudělá.

Načítání dynamického rozhraní API

Nástroj má integrované dynamické načítání rozhraní API, aby se k nasazení prostředků v cílovém předplatném použila nejnovější verze rozhraní API poskytovatele prostředků dostupná ve zdrojovém předplatném:

Načtení rozhraní API pro obrázek

Načítání rozhraní API pro obrázek v resource_processor.ps1.

Existuje však možnost, že verze rozhraní API poskytovatele prostředků cílového předplatného je starší než verze zdrojového předplatného a nepodporuje verzi poskytovanou ze zdrojového předplatného. V takovém případě se při spuštění nasazení vyvolá chyba. Pokud chcete tento problém vyřešit, aktualizujte poskytovatele prostředků v cílovém předplatném tak, aby odpovídali poskytovatelům ve zdrojovém předplatném.

Paralelní nasazení

Nástroj vyžaduje parametr s názvem parallel. Tento parametr přebírá logickou hodnotu určující, jestli se načtené prostředky mají nasadit paralelně, nebo ne. Pokud je hodnota nastavená na true, pak každé volání New-AzResourceGroupDeployment bude mít příznak -asJob a bloky kódu, které čekají na dokončení paralelních úloh, se přidají mezi sady nasazení prostředků na základě typů prostředků. Zajišťuje, že všechny prostředky jednoho typu byly nasazeny před nasazením dalšího typu prostředku. Pokud je hodnota paralelního parametru nastavená na false, všechny prostředky se nasadí sériově.

Přidání dalších typů prostředků

Přidání nových typů prostředků je jednoduché. Vývojář musí vytvořit přizpůsobený procesor a buď šablonu Azure Resource Manager, nebo generátor šablon Azure Resource Manager. Po dokončení musí vývojář přidat typ prostředku do ValidateSet pro parametr $resourceType a pole $resourceTypes v resource_retriever.ps1. Při přidávání typu prostředku do pole $resourceTypes musí být přidán ve správném pořadí. Pořadí pole určuje pořadí nasazení prostředků, proto mějte na paměti závislosti. A konečně, pokud přizpůsobený procesor využívá generátor šablon Azure Resource Manager, musí přidat název typu prostředku do pole $customTypes v post_process.ps1.

Spuštění replikátoru předplatného Azure

Pokud chcete spustit nástroj Replikátor předplatného Azure (v3), budete muset spustit resource_retriever.ps1 a zadat všechny parametry. Parametr resourceType , existuje možnost zvolit Vše místo jednoho typu prostředku. Pokud je vybraná možnost Vše , resource_retriever.ps1 zpracuje všechny prostředky v pořadí, aby se při spuštění nasazení nejprve nasadily závislé prostředky. Například virtuální sítě se nasazují před virtuálními počítači, protože virtuální počítače vyžadují, aby se virtuální síť správně nasadila.

Po dokončení spuštění skriptu budou k dispozici tři nové složky, Deployment_Files, Parameter_Files a Custom_ARM_Templates.

Poznámka

Před spuštěním libovolného z vygenerovaných skriptů musíte nastavit správné prostředí, přihlásit se k cílovému předplatnému (v novém azure stack hubu pro příklad) a nastavit pracovní adresář do složky Deployment_Files .

Deployment_Files bude obsahovat dva soubory DeployResourceGroups.ps1 a DeployResources.ps1. Spuštěním DeployResourceGroups.ps1 se skupiny prostředků nasadí. Spuštěním DeployResources.ps1 se nasadí všechny zpracovávané prostředky. V případě, že se nástroj spustil s typem prostředku All nebo Microsoft.Compute/virtualMachines , DeployResources.ps1 vyzve uživatele k zadání hesla správce virtuálního počítače, které se použije k vytvoření všech virtuálních počítačů.

Příklad

  1. Spusťte skript.

    Spuštění skriptu

    Poznámka

    Nezapomeňte nakonfigurovat zdrojovou evironmentu a kontext předplatného pro instanci ps.

  2. Zkontrolujte nově vytvořené složky:

    Kontrola složek

  3. Nastavte kontext cílového předplatného, změňte složku na Deployment_Files, nasaďte skupiny prostředků (spusťte DeployResourceGroups.ps1 skript) a pak spusťte nasazení prostředků (spusťte DeployResources.ps1 skript).

    Konfigurace a spuštění nasazení

  4. Spuštěním příkazu Get-Job zkontrolujte stav. Get-Job | Receive-Job vrátí výsledky.

Vyčištění

Ve složce replicatorV3 je soubor s názvemcleanup_generated_items.ps1 – odebere Deployment_Files, Parameter_Files a Custom_ARM_Templates složky a veškerý jejich obsah.

Operace replikátoru předplatného

Replikátor předplatného Azure (v3) v současné době může replikovat následující typy prostředků:

  • 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.Storage/storageAccounts

Při spuštění nástroje s typem prostředku Vše se při replikaci a nasazení bude postupovat podle následujícího pořadí (v následujícím příkladu se replikuje konfigurace všech prostředků, tj. skladová položka, nabídka atd.):

  • Microsoft.Network/virtualNetworks

    • Replikuje: – Všechny adresní prostory – Všechny podsítě
  • Microsoft.Network/virtualNetworkGateways

    • Replikuje: – Konfigurace veřejné IP adresy – Konfigurace podsítě – Typ SÍTĚ VPN – Typ brány
  • Microsoft.Network/routeTables

  • Microsoft.Network/networkSecurityGroups

    • Replikuje: – Všechna příchozí a odchozí pravidla zabezpečení
  • Microsoft.Network/publicIPAddresses

  • Microsoft.Network/loadBalancers

    • Replikuje: – Privátní IP adresy – Konfigurace veřejné IP adresy – Konfigurace podsítě
  • Microsoft.Compute/availabilitySets

    • Replikuje: – Počet domén selhání – Počet aktualizačních domén
  • Microsoft.Storage/storageAccounts

  • Microsoft.Compute/virtualMachines

    • Replikuje:
      - Datové disky (bez dat)
      – Velikost virtuálního počítače
      - Operační systém
      – Konfigurace účtu úložiště diagnostiky
      – Konfigurace veřejné IP adresy
      – Síťové rozhraní
      – Privátní IP adresa síťového rozhraní
      – Konfigurace skupiny zabezpečení sítě
      – Konfigurace skupiny dostupnosti

Poznámka

Vytváří pouze spravované disky pro disky s operačním systémem a datové disky. V současné době se nepodporuje používání účtů úložiště.

Omezení

Nástroj může replikovat prostředky z jednoho předplatného do jiného, pokud poskytovatelé prostředků cílového předplatného podporují všechny prostředky a možnosti, které se replikují ze zdrojového předplatného.

Pokud chcete zajistit úspěšnou replikaci, ujistěte se, že verze poskytovatele prostředků cílového předplatného odpovídají verzím zdrojového předplatného.

Při replikaci z komerčního Azure do komerčního Azure nebo z jednoho předplatného v rámci služby Azure Stack Hub do jiného předplatného ve stejné službě Azure Stack Hub dojde k problémům při replikaci účtů úložiště. Důvodem je požadavek na pojmenování účtu úložiště, aby všechny názvy účtů úložiště byly jedinečné ve všech komerčních službách Azure nebo ve všech předplatných v oblasti nebo instanci služby Azure Stack Hub. Replikace účtů úložiště mezi různými instancemi služby Azure Stack Hub proběhne úspěšně, protože zásobníky jsou samostatné oblasti nebo instance.

Další kroky

Rozdíly a důležité informace týkající se sítí služby Azure Stack Hub