Dela via


Replikera resurser med azure Stack Hub-prenumerationsreplikatorn

Du kan använda PowerShell-skriptet för Azure Stack Hub-prenumerationsreplikatorn för att kopiera resurserna mellan Azure Stack Hub-prenumerationer, mellan Azure Stack Hub-stämplar eller mellan Azure Stack Hub och Azure. Replikatorskriptet läser och återskapar Azure-Resource Manager resurser från olika Azure- och Azure Stack Hub-prenumerationer. Den här artikeln beskriver hur skriptet fungerar, hur du kan använda skriptet och tillhandahåller en referens för skriptåtgärder.

Du hittar skripten som används i den här artikeln på GitHub-lagringsplatsen Azure Intelligent Edge Patterns . Skripten finns i mappen för prenumerationsreplikatorn .

Översikt över prenumerationsreplikator

Azure-prenumerationsreplikatorn har utformats för att vara modulär. Det här verktyget använder en kärnprocessor som samordnar resursreplikeringen. Dessutom stöder verktyget anpassningsbara processorer som fungerar som mallar för att kopiera olika typer av resurser.

Kärnprocessorn består av följande tre skript:

  • resource_retriever.ps1

    • Genererar mappar för att lagra utdatafiler.

    • Anger kontext till källprenumerationen.

    • Hämtar resurserna och skickar dem till resource_processor.ps1.

  • resource_processor.ps1

    • Bearbetar resursen som skickas av resource_retriever.ps1.

    • Avgör vilken anpassad processor som ska användas och skickar resurserna.

  • post_process.ps1

    • Post bearbetar utdata som genereras av den anpassade processorn för att förbereda den för distribution i målprenumerationen.

    • Genererar distributionskod för att distribuera resurserna i målprenumerationen.

De tre skripten styr informationsflödet på ett standard sätt för att ge större flexibilitet. Om du till exempel lägger till stöd för ytterligare resurser behöver du inte ändra någon kod i kärnprocessorn.

Anpassade processorer, som nämndes ovan, är ps1 filer som avgör hur en viss typ av resurs ska bearbetas. Namnet på en anpassad processor namnges alltid med hjälp av typdata i en resurs. Anta till exempel att $vm innehåller ett virtuellt datorobjekt som kör $vm. Typen skulle ge Microsoft.Compute/virtualMachines. Det innebär att en processor för en virtuell dator skulle få namnet virtualMachines_processor.ps1, namnet måste vara exakt som det visas i resursmetadata eftersom det är så kärnprocessorn avgör vilken anpassad processor som ska användas.

En anpassad processor avgör hur en resurs ska replikeras genom att avgöra vilken information som är viktig och diktera hur den informationen ska hämtas från resursmetadata. Den anpassade processorn tar sedan alla extraherade data och använder dem för att generera en parameterfil som ska användas tillsammans med en Azure Resource Manager-mall för att distribuera resursen i målprenumerationen. Den här parameterfilen lagras i Parameter_Files när den har bearbetats av post_process.ps1.

Det finns en mapp i replikatorfilstrukturen med namnet Standardized_ARM_Templates. Beroende på källmiljön använder distributionerna en av dessa standardiserade Azure Resource Manager-mallar, eller så måste en anpassad Azure-Resource Manager-mall genereras. I det här fallet måste en anpassad processor anropa en Azure Resource Manager-mallgenerator. I exemplet som startades tidigare skulle namnet på en Azure Resource Manager-mallgenerator för virtuella datorer få namnet virtualMachines_ARM_Template_Generator.ps1. Azure Resource Manager-mallgeneratorn ansvarar för att skapa en anpassad Azure Resource Manager-mall baserat på vilken information som finns i metadata för en resurs. Om den virtuella datorresursen till exempel har metadata som anger att den är medlem i en tillgänglighetsuppsättning, skapar Azure Resource Manager mallgenerator en Azure Resource Manager-mall med kod som anger ID:t för tillgänglighetsuppsättningen som den virtuella datorn är en del av. På så sätt läggs den virtuella datorn automatiskt till i tillgänglighetsuppsättningen vid distributionen när den virtuella datorn distribueras till den nya prenumerationen. Dessa anpassade Azure Resource Manager-mallar lagras i mappen Custom_ARM_Templates som finns i mappen Standardized_ARM_Templates. post_processor.ps1 ansvarar för att avgöra om en distribution ska använda en standardiserad Azure Resource Manager-mall eller en anpassad och generera motsvarande distributionskod.

Skriptet post-process.ps1 ansvarar för att rensa parameterfilerna och skapa skripten som användaren ska använda för att distribuera de nya resurserna. Under rensningsfasen ersätter skriptet alla referenser till källprenumerations-ID, klient-ID och plats med motsvarande målvärden. Den matar sedan ut parameterfilen till mappen Parameter_Files . Den avgör sedan om resursen som bearbetas använder en anpassad Azure Resource Manager-mall eller inte och genererar motsvarande distributionskod, som använder cmdleten New-AzResourceGroupDeployment. Distributionskoden läggs sedan till i filen med namnetDeployResources.ps1 lagras i mappen Deployment_Files . Slutligen avgör skriptet den resursgrupp som resursen tillhör och kontrollerar DeployResourceGroups.ps1 skriptet för att se om distributionskoden för att distribuera resursgruppen redan finns. Om det inte gör det kommer det att lägga till kod i skriptet för att distribuera resursgruppen, om den gör det gör den ingenting.

Dynamisk API-hämtning

Verktyget har dynamisk API-hämtning inbyggd så att den senaste api-versionen för resursprovidern som är tillgänglig i källprenumerationen används för att distribuera resurserna i målprenumerationen:

Bild-API-hämtning

Bild-API-hämtning i resource_processor.ps1.

Det finns dock en chans att målprenumerationens API-version för resursprovidern är äldre än källprenumerationens och inte stöder den version som tillhandahålls från källprenumerationen. I det här fallet utlöses ett fel när distributionen körs. Lös detta genom att uppdatera resursprovidrar i målprenumerationen så att de matchar dem i källprenumerationen.

Parallella distributioner

Verktyget kräver en parameter med namnet parallel. Den här parametern tar ett booleskt värde som anger om de hämtade resurserna ska distribueras parallellt eller inte. Om värdet är inställt på true kommer varje anrop till New-AzResourceGroupDeployment att ha flaggan -asJob och kodblock som väntar på att parallella jobb ska slutföras läggs till mellan uppsättningar med resursdistributioner baserat på resurstyperna. Det säkerställer att alla resurser av en typ har distribuerats innan nästa typ av resurs distribueras. Om värdet för den parallella parametern är inställt på false distribueras alla resurser i seriellt.

Lägga till ytterligare resurstyper

Det är enkelt att lägga till nya resurstyper. Utvecklaren måste skapa en anpassad processor och antingen en Azure Resource Manager-mall eller en Azure Resource Manager-mallgenerator. När det är klart måste utvecklaren lägga till resurstypen i ValidateSet för parametern $resourceType och $resourceTypes-matrisen i resource_retriever.ps1. När du lägger till resurstypen i $resourceTypes matris måste den läggas till i rätt ordning. Matrisens ordning avgör i vilken ordning resurserna ska distribueras, så tänk på beroenden. Om den anpassade processorn slutligen använder en Azure Resource Manager-mallgenerator måste de lägga till resurstypsnamnet i $customTypes-matrisen i post_process.ps1.

Köra Replikatorn för Azure-prenumeration

Om du vill köra verktyget Azure-prenumerationsreplikator (v3) måste du starta resource_retriever.ps1 och ange alla parametrar. Parametern resourceType , det finns ett alternativ för att välja Alla i stället för en resurstyp. Om Alla har valts kommer resource_retriever.ps1 att bearbeta alla resurser i en ordning så att beroende resurser distribueras först när distributionen körs. Till exempel distribueras virtuella nätverk före virtuella datorer eftersom virtuella datorer kräver att ett virtuellt nätverk finns på plats för att de ska kunna distribueras korrekt.

När skriptet är klart kommer det att finnas tre nya mappar, Deployment_Files, Parameter_Files och Custom_ARM_Templates.

Anteckning

Innan du kör något av de genererade skripten måste du ange rätt miljö och logga in på målprenumerationen (i den nya Azure Stack Hub till exempel) och ange arbetskatalogen till mappen Deployment_Files .

Deployment_Files innehåller två filer DeployResourceGroups.ps1 och DeployResources.ps1. Om du kör DeployResourceGroups.ps1 distribueras resursgrupperna. Om du kör DeployResources.ps1 distribueras alla resurser som har bearbetats. Om verktyget kördes med Alla eller Microsoft.Compute/virtualMachines som resurstyp uppmanar DeployResources.ps1 användaren att ange ett administratörslösenord för virtuella datorer som ska användas för att skapa alla virtuella datorer.

Exempel

  1. Kör skriptet.

    Kör skriptet

    Anteckning

    Glöm inte att konfigurera källevironmentet och prenumerationskontexten för PS-instansen.

  2. Granska de nyligen skapade mapparna:

    Granska mapparna

  3. Ange kontexten till målprenumerationen, ändra mappen till Deployment_Files, distribuera resursgrupperna (kör DeployResourceGroups.ps1 skriptet) och starta sedan resursdistributionen (kör DeployResources.ps1-skriptet).

    Konfigurera och starta distributionen

  4. Kör Get-Job för att kontrollera statusen. Get-Job | Receive-Job returnerar resultatet.

Rensa

I mappen replicatorV3 finns det en fil med namnet cleanup_generated_items.ps1 – den tar bort mapparna Deployment_Files, Parameter_Files och Custom_ARM_Templates och allt deras innehåll.

Åtgärder för prenumerationsreplikator

Azure-prenumerationsreplikatorn (v3) kan för närvarande replikera följande resurstyper:

  • 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

När du kör verktyget med Alla som resurstyp följs följande ordning när du replikerar och distribuerar (i nedanstående avsnitt har alla resurser sin konfiguration replikerad, dvs. sku, erbjudande osv.):

  • Microsoft.Network/virtualNetworks

    • Replikerar: – Alla adressutrymmen – Alla undernät
  • Microsoft.Network/virtualNetworkGateways

    • Replikerar: – Offentlig IP-konfiguration – Undernätskonfiguration – VPN-typ – Gatewaytyp
  • Microsoft.Network/routeTables

  • Microsoft.Network/networkSecurityGroups

    • Replikerar: – Alla säkerhetsregler inkommande och utgående
  • Microsoft.Network/publicIPAddresses

  • Microsoft.Network/loadBalancers

    • Replikerar: – Privata IP-adresser – Konfiguration av offentlig IP-adress – Konfiguration av undernät
  • Microsoft.Compute/availabilitySets

    • Replikerar: – Antal feldomäner – Antal uppdateringsdomäner
  • Microsoft.Storage/storageAccounts

  • Microsoft.Compute/virtualMachines

    • Replikerar:
      – Datadiskar (utan data)
      – Storlek på virtuell dator
      -Operativsystem
      – Konfiguration av diagnostiklagringskonto
      – Offentlig IP-konfiguration
      – Nätverksgränssnitt
      – Privat IP-adress för nätverksgränssnitt
      – Konfiguration av nätverkssäkerhetsgrupp
      – Konfiguration av tillgänglighetsuppsättning

Anteckning

Skapar endast hanterade diskar för OS-diskar och datadiskar. För närvarande finns det inte stöd för att använda lagringskonton

Begränsningar

Verktyget kan replikera resurser från en prenumeration till en annan så länge målprenumerationens resursprovidrar stöder alla resurser och alternativ som replikeras från källprenumerationen.

För att säkerställa en lyckad replikering kontrollerar du att målprenumerationens resursproviderversioner matchar källprenumerationens.

När du replikerar från kommersiella Azure till kommersiella Azure eller från en prenumeration i Azure Stack Hub till en annan prenumeration i samma Azure Stack Hub, uppstår det problem vid replikering av lagringskonton. Detta beror på namngivningskravet för lagringskontot att alla lagringskontonamn är unika för alla kommersiella Azure-prenumerationer eller för alla prenumerationer i en Azure Stack Hub-region/instans. Replikering av lagringskonton över olika Azure Stack Hub-instanser lyckas eftersom stackarna är separata regioner/instanser.

Nästa steg

Skillnader och överväganden för Azure Stack Hub-nätverk