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

Możesz użyć skryptu replikatora subskrypcji usługi Azure Stack Hub programu PowerShell, aby skopiować zasoby między subskrypcjami usługi Azure Stack Hub, sygnaturami usługi Azure Stack Hub lub między usługą Azure Stack Hub i platformą Azure. Skrypt replikatora odczytuje i ponownie kompiluje zasoby usługi Azure Resource Manager z różnych subskrypcji platformy Azure i usługi Azure Stack Hub. W tym artykule opisano działanie skryptu, sposób użycia skryptu i przedstawiono informacje referencyjne dotyczące operacji skryptów.

Skrypty używane w tym artykule można znaleźć w repozytorium GitHub Wzorce usługi Azure Intelligent Edge . Skrypty znajdują się w folderze replikatora subskrypcji .

Omówienie replikatora subskrypcji

Replikator subskrypcji platformy Azure został zaprojektowany tak, aby był 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 subskrypcji źródłowej.

    • Pobiera zasoby i przekazuje je do resource_processor.ps1.

  • resource_processor.ps1

    • Przetwarza zasób przekazywany 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 w celu przygotowania go do wdrożenia w subskrypcji docelowej.

    • Generuje kod wdrożenia, aby wdrożyć zasoby 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 kodu w procesorze podstawowym.

Niestandardowe procesory wymienione powyżej to ps1 pliki, które określają sposób przetwarzania określonego typu zasobu. Nazwa niestandardowego procesora jest zawsze nazywana przy użyciu danych typu w zasobie. Na przykład przy założeniu, że $vm obiekt maszyny wirtualnej jest przechowywany, uruchamiając polecenie $vm. Typ zwraca Microsoft.Compute/virtualMachineswartość . Oznacza to, że procesor maszyny wirtualnej ma nazwę virtualMachines_processor.ps1, nazwa musi być dokładnie taka, jak w metadanych zasobu, ponieważ w ten sposób procesor podstawowy określa, który dostosowany procesor ma być używany.

Dostosowany procesor określa sposób replikacji zasobu, określając, jakie informacje są ważne i dyktując sposób ściągania tych informacji z metadanych zasobów. Następnie dostosowany procesor pobiera wszystkie wyodrębnione dane i używa ich do wygenerowania pliku parametrów, który będzie używany w połączeniu z szablonem usługi Azure Resource Manager w celu wdrożenia zasobu w subskrypcji docelowej. Ten plik parametrów jest przechowywany w Parameter_Files po przetworzeniu przez post_process.ps1.

Istnieje folder w strukturze plików replikatora o nazwie Standardized_ARM_Templates. W zależności od środowiska źródłowego wdrożenia będą używać jednego z tych ustandaryzowanych szablonów usługi Azure Resource Manager lub zostanie wygenerowany dostosowany szablon usługi Azure Resource Manager. W takim przypadku dostosowany procesor musi wywoływać generator szablonów usługi Azure Resource Manager. W przykładzie uruchomionym wcześniej nazwa generatora szablonów usługi Azure Resource Manager dla maszyn wirtualnych będzie miała nazwę virtualMachines_ARM_Template_Generator.ps1. Generator szablonów usługi Azure Resource Manager jest odpowiedzialny za utworzenie dostosowanego szablonu usługi Azure 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 usługi Azure Resource Manager utworzy szablon usługi Azure Resource Manager z kodem określającym identyfikator zestawu dostępności, którego częścią jest maszyna wirtualna. W ten sposób, gdy maszyna wirtualna zostanie wdrożona w nowej subskrypcji, zostanie automatycznie dodana do zestawu dostępności podczas wdrażania. Te dostosowane szablony usługi Azure Resource Manager są przechowywane w folderze Custom_ARM_Templates znajdującym się w folderze Standardized_ARM_Templates. post_processor.ps1 jest odpowiedzialny za określenie, czy wdrożenie ma używać ustandaryzowanego szablonu usługi Azure 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, których użytkownik użyje do wdrożenia nowych zasobów. W fazie czyszczenia skrypt zastępuje wszystkie odwołania do identyfikatora subskrypcji źródłowej, 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 usługi Azure Resource Manager, czy nie, i generuje odpowiedni kod wdrożenia, który korzysta z 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, zostanie dodany kod do tego skryptu w celu wdrożenia grupy zasobów, jeśli to zrobi, to nic nie robi.

Dynamiczne pobieranie interfejsu API

Narzędzie ma wbudowane dynamiczne pobieranie interfejsu API, dzięki czemu najnowsza wersja interfejsu API dostawcy zasobów dostępna w subskrypcji źródłowej służy do wdrażania zasobów w subskrypcji docelowej:

Pobieranie interfejsu API rysunku

Pobieranie interfejsu API rysunku w resource_processor.ps1.

Istnieje jednak prawdopodobieństwo, że wersja interfejsu API dostawcy zasobów subskrypcji docelowej jest starsza niż subskrypcja źródłowa i nie obsługuje wersji udostępnianej z subskrypcji źródłowej. W takim przypadku po uruchomieniu wdrożenia zostanie zgłoszony błąd. Aby rozwiązać ten problem, zaktualizuj dostawców zasobów w subskrypcji docelowej, aby dopasować 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 pobrane zasoby powinny być wdrażane równolegle, czy nie. Jeśli wartość jest ustawiona na true, każde wywołanie polecenia New-AzResourceGroupDeployment będzie mieć flagę -asJob i bloki kodu do oczekiwania na zakończenie zadań równoległych zostaną dodane między zestawami wdrożeń zasobów na podstawie typów zasobów. Gwarantuje to, że wszystkie zasoby jednego typu zostały wdrożone przed wdrożeniem następnego typu zasobu. Jeśli wartość parametru równoległego ma wartość false, wszystkie zasoby zostaną wdrożone w trybie szeregowym.

Dodawanie dodatkowych typów zasobów

Dodawanie nowych typów zasobów jest proste. Deweloper musi utworzyć dostosowany procesor i szablon usługi Azure Resource Manager lub generator szablonów usługi Azure Resource Manager. Po zakończeniu deweloper musi dodać typ zasobu do zestawu ValidateSet dla parametru $resourceType i tablicy $resourceTypes w resource_retriever.ps1. Podczas dodawania typu zasobu do tablicy $resourceTypes należy dodać go w odpowiedniej kolejności. Kolejność tablicy określa kolejność wdrażania zasobów, dlatego należy pamiętać o zależnościach. Na koniec, jeśli dostosowany procesor korzysta z generatora szablonów usługi Azure Resource Manager, musi dodać nazwę typu zasobu do tablicy $customTypes w post_process.ps1.

Uruchamianie replikatora subskrypcji platformy Azure

Aby uruchomić narzędzie replikatora subskrypcji platformy Azure (wersja 3), należy uruchomić resource_retriever.ps1, podając wszystkie parametry. Parametr resourceType umożliwia wybranie opcji Wszystkie zamiast jednego typu zasobu. W przypadku wybrania opcji Wszystkie resource_retriever.ps1 przetworzy wszystkie zasoby w kolejności, aby po uruchomieniu wdrożenia najpierw wdrażane są zasoby zależne. 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 będą dostępne trzy nowe foldery, Deployment_Files, Parameter_Files i Custom_ARM_Templates.

Uwaga

Przed uruchomieniem dowolnego wygenerowanego skryptu należy ustawić odpowiednie środowisko i zalogować się do subskrypcji docelowej (w nowym usłudze Azure Stack Hub dla przykładu) i ustawić katalog roboczy na folder Deployment_Files .

Deployment_Files będzie przechowywać dwa pliki DeployResourceGroups.ps1 i DeployResources.ps1. Wykonanie DeployResourceGroups.ps1 spowoduje wdrożenie grup zasobów. Wykonanie DeployResources.ps1 spowoduje wdrożenie wszystkich przetworzonych zasobów. W przypadku, gdy narzędzie zostało wykonane z typem zasobu All lub Microsoft.Compute/virtualMachines , DeployResources.ps1 wyświetli użytkownikowi monit o wprowadzenie hasła administratora maszyny wirtualnej, które zostanie użyte do utworzenia wszystkich maszyn wirtualnych.

Przykład

  1. Uruchom skrypt.

    Uruchamianie skryptu

    Uwaga

    Nie zapomnij skonfigurować eksmisji źródłowej 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 skrypt DeployResourceGroups.ps1), a następnie uruchom wdrożenie zasobów (uruchom skrypt DeployResources.ps1).

    Konfigurowanie i uruchamianie wdrożenia

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

Czyszczenie

W folderze replicatorV3 znajduje się plik o nazwie cleanup_generated_items.ps1 — spowoduje to usunięcie Deployment_Files, Parameter_Files i Custom_ARM_Templates folderów oraz całej zawartości.

Operacje replikatora subskrypcji

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

  • 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

Podczas uruchamiania narzędzia z wartością Wszystkie jako typ zasobu podczas replikacji i wdrażania będzie następuje następująca kolejność (w poniższej sekcji wszystkie zasoby mają zreplikowaną konfigurację, tj. jednostkę SKU, ofertę itp.):

  • 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/networkSecurityGroups

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

  • Microsoft.Network/loadBalancers

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

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

  • 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

Tworzy tylko dyski zarządzane dla dysków systemu operacyjnego i dysków danych. Obecnie nie jest obsługiwane używanie kont magazynu

Ograniczenia

Narzędzie może replikować zasoby z jednej subskrypcji do innej, o ile dostawcy zasobów subskrypcji docelowej obsługują wszystkie zasoby i opcje replikowane z subskrypcji źródłowej.

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

Podczas replikowania z komercyjnej platformy Azure do komercyjnej platformy Azure lub z jednej subskrypcji w usłudze Azure Stack Hub do innej subskrypcji w ramach tej samej usługi Azure Stack Hub wystąpią problemy podczas replikowania kont magazynu. Jest to spowodowane wymaganiem nazewnictwa konta magazynu, że wszystkie nazwy kont magazynu są unikatowe we wszystkich komercyjnych platformach Azure lub we wszystkich subskrypcjach w regionie/wystąpieniu usługi Azure Stack Hub. Replikowanie kont magazynu w różnych wystąpieniach usługi Azure Stack Hub powiedzie się, ponieważ stosy są oddzielnymi regionami/wystąpieniami.

Następne kroki

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