Replikowanie zasobów przy użyciu replikatora subskrypcji Azure Stack Hub

Możesz użyć skryptu replikatora subskrypcji Azure Stack Hub programu PowerShell, aby skopiować zasoby między subskrypcjami Azure Stack Hub, sygnaturami Azure Stack Hub lub między Azure Stack Hub i Azure. Skrypt replikatora odczytuje i ponownie kompiluje zasoby Azure Resource Manager z różnych subskrypcji Azure i Azure Stack Hub. W tym artykule wyjaśniono, jak działa skrypt, jak można używać skryptu i przedstawiono informacje referencyjne dotyczące operacji skryptów.

Skrypty używane w tym artykule znajdują się w repozytorium Azure Intelligent Edge Patterns GitHub. Skrypty znajdują się w folderze replikatora subskrypcji .

Omówienie replikatora subskrypcji

Replikator subskrypcji Azure jest modułowy. To narzędzie używa procesora podstawowego, który organizuje replikację zasobów. Ponadto narzędzie obsługuje dostosowywalne procesory, które działają jako szablony do kopiowania różnych typów zasobów.

Procesor podstawowy składa się z następujących trzech skryptów:

  • resource_retriever.ps1

    • Generuje foldery do przechowywania plików wyjściowych.

    • Ustawia kontekst na subskrypcję źródłową.

    • Pobiera zasoby i przekazuje je do resource_processor.ps1.

  • resource_processor.ps1

    • Przetwarza zasób przekazany przez resource_retriever.ps1.

    • Określa, który dostosowany procesor ma być używany i przekazuje zasoby.

  • post_process.ps1

    • Post przetwarza dane wyjściowe wygenerowane przez dostosowany procesor, aby przygotować go do wdrożenia w subskrypcji docelowej.

    • Generuje kod wdrożenia w celu wdrożenia zasobów w subskrypcji docelowej.

Trzy skrypty kontrolują przepływ informacji w standardowy sposób, aby zapewnić większą elastyczność. Dodanie obsługi dodatkowych zasobów, na przykład, nie wymaga zmiany żadnego kodu w procesorze podstawowym.

Niestandardowe procesory, o których wspomniano wcześniej, to ps1 pliki, które określają sposób przetwarzania określonego typu zasobu. Nazwa niestandardowego procesora zawsze używa danych typu w zasobie. Na przykład przy założeniu, że $vm obiekt maszyny wirtualnej jest przechowywany, uruchamiając polecenie $vm. Typ zwraca wartość Microsoft.Compute/virtualMachines. Oznacza to, że procesor maszyny wirtualnej ma nazwę virtualMachines_processor.ps1. Nazwa musi być dokładnie tak, jak pojawia się w metadanych zasobu, ponieważ procesor podstawowy używa jej do określenia, który dostosowany procesor ma być używany.

Dostosowany procesor określa, jak należy replikować zasób, określając, jakie informacje są ważne i dyktując sposób ściągania tych informacji z metadanych zasobu. Dostosowany procesor pobiera następnie wszystkie wyodrębnione dane i używa ich do wygenerowania pliku parametrów, który współpracuje z szablonem Azure Resource Manager w celu wdrożenia zasobu w subskrypcji docelowej. Skrypt post_process.ps1 przechowuje ten plik parametrów w folderze Parameter_Files po jego przetworzeniu.

W strukturze plików replikatora znajduje się folder o nazwie Standardized_ARM_Templates. W zależności od środowiska źródłowego wdrożenia używają jednego z tych ustandaryzowanych szablonów Resource Manager lub może być konieczne wygenerowanie dostosowanego szablonu Resource Manager. W takim przypadku dostosowany procesor musi wywołać generator szablonów szablonów Resource Manager. W przykładzie uruchomionym wcześniej nazwa generatora szablonów Resource Manager dla maszyn wirtualnych to virtualMachines_ARM_Template_Generator.ps1. Generator szablonów Resource Manager jest odpowiedzialny za utworzenie dostosowanego szablonu Resource Manager na podstawie informacji w metadanych zasobu. Jeśli na przykład zasób maszyny wirtualnej zawiera metadane określające, że jest członkiem zestawu dostępności, generator szablonów Resource Manager tworzy szablon Resource Manager z kodem określającym identyfikator zestawu dostępności, którego częścią jest maszyna wirtualna. Dzięki temu, gdy maszyna wirtualna zostanie wdrożona w nowej subskrypcji, zostanie ona automatycznie dodana do zestawu dostępności podczas wdrażania. Te dostosowane szablony Resource Manager są przechowywane w folderze Custom_ARM_Templates znajdującym się w folderze Standardized_ARM_Templates. Skrypt post_processor.ps1 jest odpowiedzialny za określenie, czy wdrożenie ma używać ustandaryzowanego szablonu Resource Manager, czy dostosowanego i generowania odpowiedniego kodu wdrożenia.

Skrypt post-process.ps1 jest odpowiedzialny za czyszczenie plików parametrów i tworzenie skryptów używanych przez użytkownika do wdrażania nowych zasobów. W fazie czyszczenia skrypt zastępuje wszystkie odwołania do źródłowego identyfikatora subskrypcji, identyfikatora dzierżawy i lokalizacji odpowiednimi wartościami docelowymi. Następnie zwraca plik parametrów do folderu Parameter_Files . Następnie określa, czy przetwarzany zasób używa dostosowanego szablonu Resource Manager, czy nie, i generuje odpowiedni kod wdrożenia, który używa polecenia cmdlet New-AzResourceGroupDeployment. Kod wdrożenia jest następnie dodawany do pliku o nazwie DeployResources.ps1 przechowywanego w folderze Deployment_Files . Na koniec skrypt określa grupę zasobów, do której należy zasób, i sprawdza skrypt DeployResourceGroups.ps1 , aby sprawdzić, czy kod wdrożenia w celu wdrożenia tej grupy zasobów już istnieje. Jeśli tak nie jest, skrypt dodaje kod do tego skryptu w celu wdrożenia grupy zasobów. Jeśli tak, skrypt nic nie robi.

Pobieranie dynamicznego interfejsu API

Narzędzie zawiera dynamiczne pobieranie interfejsu API, dlatego używa najnowszej wersji interfejsu API dostawcy zasobów dostępnej w subskrypcji źródłowej w celu wdrożenia zasobów w subskrypcji docelowej:

Zrzut ekranu przedstawiający pobieranie interfejsu API.

Jednak subskrypcja docelowa może mieć starszą wersję interfejsu API dostawcy zasobów, która nie obsługuje wersji zapewnianej przez subskrypcję źródłową. W takim przypadku podczas uruchamiania wdrożenia wystąpi błąd. Aby rozwiązać ten błąd, zaktualizuj dostawców zasobów w subskrypcji docelowej w celu dopasowania ich do tych w subskrypcji źródłowej.

Wdrożenia równoległe

Narzędzie wymaga parametru o nazwie parallel. Ten parametr przyjmuje wartość logiczną określającą, czy równolegle wdrożyć pobrane zasoby. Jeśli ustawisz wartość true, każde wywołanie polecenia New-AzResourceGroupDeployment zawiera flagę -asJob . Proces dodaje bloki kodu, które oczekują na zakończenie zadań równoległych między zestawami wdrożeń zasobów na podstawie typów zasobów. Gwarantuje to, że wszystkie zasoby jednego typu zostaną wdrożone przed wdrożeniem następnego typu zasobu. Jeśli ustawisz wartość parametru równoległego na false, zasoby są wdrażane w trybie szeregowym.

Dodawanie dodatkowych typów zasobów

Dodawanie nowych typów zasobów jest proste. Utwórz dostosowany procesor i szablon Resource Manager lub generator szablonów Resource Manager. Po wykonaniu tych kroków dodaj typ zasobu do parametru ValidateSet dla parametru $resourceType i tablicy $resourceTypes w resource_retriever.ps1. Po dodaniu typu zasobu do tablicy $resourceTypes dodaj go w odpowiedniej kolejności. Kolejność tablicy określa kolejność wdrażania zasobów, więc należy pamiętać o zależnościach. Na koniec jeśli dostosowany procesor używa generatora szablonów Resource Manager, dodaj nazwę typu zasobu do tablicy $customTypes w post_process.ps1.

Uruchamianie replikatora subskrypcji Azure

Aby uruchomić narzędzie replikatora subskrypcji Azure (wersja 3), uruchom resource_retriever.ps1 i podaj wszystkie parametry. Dla parametru resourceType można wybrać pozycję Wszystkie , a nie jeden typ zasobu. W przypadku wybrania opcji Wszystkie resource_retriever.ps1 przetwarza wszystkie zasoby w kolejności, tak aby po uruchomieniu wdrożenia zasoby zależne zostały wdrożone jako pierwsze. Na przykład sieci wirtualne są wdrażane przed maszynami wirtualnymi, ponieważ maszyny wirtualne wymagają prawidłowego wdrożenia sieci wirtualnej.

Po zakończeniu wykonywania skryptu istnieją trzy nowe foldery: Deployment_Files, Parameter_Files i Custom_ARM_Templates.

Uwaga / Notatka

Przed uruchomieniem dowolnego wygenerowanego skryptu ustaw odpowiednie środowisko i zaloguj się do subskrypcji docelowej (na przykład w nowym Azure Stack Hub). Ustaw katalog roboczy na folder Deployment_Files .

Deployment_Files zawiera dwa pliki: DeployResourceGroups.ps1 i DeployResources.ps1. Po uruchomieniu DeployResourceGroups.ps1program wdraża grupy zasobów. Po uruchomieniu DeployResources.ps1program wdraża wszystkie przetworzone zasoby. Jeśli uruchomisz narzędzie z pozycją Wszystkie lub Microsoft. Compute/virtualMachines jako typ zasobu DeployResources.ps1 monituje o wprowadzenie hasła administratora maszyny wirtualnej, którego używa do utworzenia wszystkich maszyn wirtualnych.

Przykład

  1. Uruchom skrypt.

    Zrzut ekranu przedstawiający wynik uruchomienia skryptu.

    Uwaga / Notatka

    Nie zapomnij skonfigurować środowiska źródłowego i kontekstu subskrypcji dla wystąpienia programu PS.

  2. Przejrzyj nowo utworzone foldery:

    Przeglądanie folderów

  3. Ustaw kontekst na subskrypcję docelową, zmień folder na Deployment_Files, wdróż grupy zasobów (uruchom DeployResourceGroups.ps1 skrypt), a następnie uruchom wdrożenie zasobu (uruchom DeployResources.ps1 skrypt).

    Zrzut ekranu przedstawia wynik uruchomienia wdrożenia.

  4. Uruchom polecenie , Get-Job aby sprawdzić stan. Get-Job | Receive-Job zwróci wyniki.

Czyszczenie

replicatorV3 Wewnątrz folderu plik cleanup_generated_items.ps1 usuwa foldery Deployment_Files, Parameter_Files i Custom_ARM_Templates oraz całą ich zawartość.

Operacje replikatora subskrypcji

Replikator subskrypcji Azure (wersja 3) może obecnie replikować następujące typy zasobów:

  • Microsoft.Compute/availabilitySets

  • Microsoft. Compute/virtualMachines

  • Microsoft. Moduły równoważenia obciążenia/sieci

  • Microsoft.Network/grupy zabezpieczeń sieci (networkSecurityGroups)

  • Microsoft. Network/publicIPAddresses

  • Microsoft.Network/routeTables

  • Microsoft.Network/virtualNetworks

  • Microsoft.Network/virtualNetworkGateways

  • Microsoft.Storage/kontaMagazynowe

Po uruchomieniu narzędzia z wartością Wszystkie jako typ zasobu następuje kolejność na poniższej liście podczas replikowania i wdrażania. Na poniższej liście wszystkie zasoby mają zreplikowane konfigurację, takie jak sku, oferta i inne ustawienia:

  • Microsoft.Network/virtualNetworks

    • Replikuje: — wszystkie przestrzenie adresowe — wszystkie podsieci
  • Microsoft.Network/virtualNetworkGateways

    • Replikuje: — Konfiguracja publicznego adresu IP — Konfiguracja podsieci — typ sieci VPN — typ bramy
  • Microsoft.Network/routeTables

  • Microsoft.Network/grupy zabezpieczeń sieci (networkSecurityGroups)

    • Replikuje: — wszystkie reguły zabezpieczeń przychodzące i wychodzące
  • Microsoft. Network/publicIPAddresses

  • Microsoft. Moduły równoważenia obciążenia/sieci

    • Replikuje: — prywatne adresy IP — konfiguracja publicznego adresu IP — konfiguracja podsieci
  • Microsoft.Compute/availabilitySets

    • Replikuje: — liczba domen błędów — liczba domen aktualizacji
  • Microsoft.Storage/kontaMagazynowe

  • Microsoft. Compute/virtualMachines

    • Replikuje:
      - Dyski danych (bez danych)
      — Rozmiar maszyny wirtualnej
      - System operacyjny
      — Konfiguracja konta magazynu diagnostycznego
      — Konfiguracja publicznego adresu IP
      - Interfejs sieciowy
      - Prywatny adres IP interfejsu sieciowego
      - Konfiguracja sieciowej grupy zabezpieczeń
      — Konfiguracja zestawu dostępności

Uwaga / Notatka

Ten proces tworzy tylko dyski zarządzane dla dysków systemu operacyjnego i dysków danych. Obecnie nie obsługuje ona używania kont magazynu.

Ograniczenia

Narzędzie może replikować zasoby z jednej subskrypcji do innej, o ile subskrypcja docelowa obsługuje wszystkie typy zasobów i opcje replikowane z subskrypcji źródłowej. Aby zapewnić pomyślną replikację, upewnij się, że wersje dostawcy zasobów subskrypcji docelowej są zgodne z wersjami subskrypcji źródłowej.

Aby zapewnić pomyślną replikację, upewnij się, że wersje dostawcy zasobów subskrypcji docelowej są zgodne z wersjami subskrypcji źródłowej.

Podczas replikacji zasobów z komercyjnych Azure do komercyjnych Azure lub z jednej subskrypcji w ramach Azure Stack Hub do innej subskrypcji w ramach tej samej Azure Stack Hub występują problemy podczas replikowania kont magazynu. Ten problem występuje, ponieważ nazwy kont magazynu muszą być unikatowe we wszystkich komercyjnych Azure lub we wszystkich subskrypcjach w Azure Stack Hub regionie lub wystąpieniu. Konta magazynu można pomyślnie replikować w różnych wystąpieniach Azure Stack Hub, ponieważ stosy są oddzielnymi regionami lub wystąpieniami.

Następne kroki

Różnice i zagadnienia dotyczące sieci Azure Stack Hub