Ćwiczenie — używanie modułów z rejestru

Ukończone

W poprzednim ćwiczeniu opublikowano moduły CDN i witryny internetowej w rejestrze firmy. Teraz chcesz pokazać zespołowi, który opracowuje pies toy, jak używać modułów do własnego wdrożenia.

W tym ćwiczeniu wykonasz następujące czynności:

  • Utwórz plik Bicep zawierający moduły z rejestru prywatnego.
  • Dodaj odwołania do modułów w rejestrze.
  • Skompiluj i sprawdź plik Bicep, aby dowiedzieć się, jak działa proces przywracania modułu.
  • Przejdź do korzystania z aliasu rejestru.
  • Wdróż plik Bicep na platformie Azure.

Tworzenie pliku Bicep

  1. W programie Visual Studio Code utwórz nowy plik o nazwie main.bicep.

  2. Zapisz pusty plik, aby program Visual Studio Code ładował narzędzia Bicep.

    Możesz wybrać pozycję Plik>Zapisz jako lub wybrać Ctrl+S w systemie Windows (⌘+S w systemie macOS). Pamiętaj, gdzie zapisujesz plik. Na przykład możesz utworzyć folder szablonów , aby go zapisać.

Dodawanie modułów do pliku Bicep

  1. W pliku main.bicep dodaj następujące parametry i zmienne:

    @description('The Azure region into which the resources should be deployed.')
    param location string = 'westus3'
    
    @description('The name of the App Service app.')
    param appServiceAppName string = 'toy-${uniqueString(resourceGroup().id)}'
    
    @description('The name of the App Service plan SKU.')
    param appServicePlanSkuName string = 'F1'
    
    var appServicePlanName = 'toy-dog-plan'
    
  2. Poniżej parametrów i zmiennych użyj następującego kodu, aby dodać moduł witryny internetowej z rejestru. Zastąp YOUR_CONTAINER_REGISTRY_NAME ciąg nazwą rejestru prywatnego.

    module website 'br:YOUR_CONTAINER_REGISTRY_NAME.azurecr.io/website:v1' = {
      name: 'toy-dog-website'
      params: {
        appServiceAppName: appServiceAppName
        appServicePlanName: appServicePlanName
        appServicePlanSkuName: appServicePlanSkuName
        location: location
      }
    }
    

    Zwróć uwagę, że Bicep pokazuje czerwone linie z faliste pod identyfikatorem modułu po rozpoczęciu pisania, ale następnie linie ziewiające odejdą. Dzieje się tak, ponieważ rozszerzenie Bicep dla programu Visual Studio Code odczytuje moduł z rejestru i zapisuje go w lokalnym systemie plików.

  3. Poniżej utworzonego modułu użyj następującego kodu, aby dodać moduł CDN z rejestru. Zastąp YOUR_CONTAINER_REGISTRY_NAME ciąg nazwą rejestru prywatnego.

    module cdn 'br:YOUR_CONTAINER_REGISTRY_NAME.azurecr.io/cdn:v1' = {
      name: 'toy-dog-cdn'
      params: {
        httpsOnly: true
        originHostName: website.outputs.appServiceAppHostName
      }
    }
    
  4. Zapisz plik.

Kompilowanie i inspekcja pliku Bicep

W tym miejscu skompilujesz plik Bicep do szablonu usługi ARM w formacie JSON. Zwykle nie trzeba wykonywać kompilacji, ale jest to przydatne, gdy uczysz się, jak działają moduły.

  1. W terminalu programu Visual Studio Code uruchom następujące polecenie, aby skompilować plik Bicep do pliku JSON:

    az bicep build --file main.bicep
    

    Bicep tworzy plik o nazwie main.json w tym samym folderze co plik main.bicep .

  2. Otwórz plik main.json.

    Zwróć uwagę, że w resources sekcji szablonu JSON ARM, począwszy od około wiersza 134, niektóre zasoby mają typ Microsoft.Resources/deployments. Te zasoby reprezentują wdrożenia modułów zdefiniowane w module dodanym z rejestru.

  1. W terminalu programu Visual Studio Code uruchom następujące polecenie, aby skompilować plik Bicep do pliku JSON:

    bicep build main.bicep
    

    Bicep tworzy plik o nazwie main.json w tym samym folderze co plik main.bicep .

  2. Otwórz plik main.json.

    Zwróć uwagę, że w resources sekcji szablonu JSON ARM, począwszy od około wiersza 134, niektóre zasoby mają typ Microsoft.Resources/deployments. Te zasoby reprezentują wdrożenia modułów zdefiniowane w module dodanym z rejestru.

Tworzenie aliasu rejestru

Decydujesz się utworzyć alias rejestru zamiast osadzać adres URL rejestru w pliku Bicep. Takie podejście ułatwia odczytywanie pliku Bicep.

  1. W programie Visual Studio Code utwórz nowy plik o nazwie bicepconfig.json. Utwórz go w tym samym folderze co plik main.bicep .

  2. Wklej następujący kod do pliku bicepconfig.json . Zastąp YOUR_CONTAINER_REGISTRY_NAME ciąg nazwą rejestru prywatnego.

    {
      "moduleAliases": {
        "br": {
          "ToyCompanyRegistry": {
            "registry": "YOUR_CONTAINER_REGISTRY_NAME.azurecr.io"
          }
        }
      }
    }
    
  3. Zapisz plik.

Używanie aliasu rejestru

W tym miejscu zaktualizujesz plik Bicep, aby użyć aliasu rejestru zamiast odwoływać się bezpośrednio do rejestru.

  1. Otwórz plik main.bicep.

  2. Znajdź definicję modułu website i zmień definicję, aby zawierała alias rejestru:

    module website 'br/ToyCompanyRegistry:website:v1' = {
      name: 'toy-dog-website'
      params: {
        appServiceAppName: appServiceAppName
        appServicePlanName: appServicePlanName
        appServicePlanSkuName: appServicePlanSkuName
        location: location
      }
    }
    

    Napiwek

    Pamiętaj, aby zmienić początek ścieżki modułu z br: na br/. Ponadto po ToyCompanyRegistryznaku zmień ukośnik (/) na dwukropek (:).

  3. Wprowadź podobną zmianę w cdn module:

    module cdn 'br/ToyCompanyRegistry:cdn:v1' = {
      name: 'toy-dog-cdn'
      params: {
        httpsOnly: true
        originHostName: website.outputs.appServiceAppHostName
      }
    }
    
  4. Zapisz plik.

Weryfikowanie pliku Bicep

Po zakończeniu wszystkich powyższych zmian plik main.bicep powinien wyglądać następująco:

@description('The Azure region into which the resources should be deployed.')
param location string = 'westus3'

@description('The name of the App Service app.')
param appServiceAppName string = 'toy-${uniqueString(resourceGroup().id)}'

@description('The name of the App Service plan SKU.')
param appServicePlanSkuName string = 'F1'

var appServicePlanName = 'toy-dog-plan'

module website 'br/ToyCompanyRegistry:website:v1' = {
  name: 'toy-dog-website'
  params: {
    appServiceAppName: appServiceAppName
    appServicePlanName: appServicePlanName
    appServicePlanSkuName: appServicePlanSkuName
    location: location
  }
}

module cdn 'br/ToyCompanyRegistry:cdn:v1' = {
  name: 'toy-dog-cdn'
  params: {
    httpsOnly: true
    originHostName: website.outputs.appServiceAppHostName
  }
}

Jeśli plik nie jest zgodny, skopiuj przykład lub dostosuj szablon, aby był zgodny z przykładem.

Wdróż na platformie Azure

W terminalu programu Visual Studio Code wdróż szablon na platformie Azure, uruchamiając następujące polecenie. Ukończenie pomyślnego wdrożenia może potrwać kilka minut.

az deployment group create \
   --template-file main.bicep
New-AzResourceGroupDeployment -TemplateFile main.bicep

Weryfikowanie wdrożenia

  1. Przejdź do witryny Azure Portal i upewnij się, że jesteś w subskrypcji piaskownicy:

    1. Wybierz swój awatar w prawym górnym rogu strony.
    2. Wybierz pozycję Przełącz katalog. Z listy wybierz katalog Microsoft Learn Sandbox.
  2. Na panelu po lewej stronie wybierz pozycję Grupy zasobów.

  3. Wybierz pozycję [nazwa grupy zasobów piaskownicy].

  4. W menu po lewej stronie wybierz pozycję Wdrożenia.

    Zrzut ekranu witryny Azure Portal przedstawiający grupę zasobów z wyróżnionym elementem menu Wdrożenia.

    Zwróć uwagę, że na liście znajdują się trzy wdrożenia:

    • main reprezentuje wdrożenie nadrzędnego pliku Bicep.
    • toy-dog-cdn i toy-dog-website reprezentują moduły zawarte w pliku main.bicep .
  5. Wybierz główne wdrożenie i rozwiń węzeł Szczegóły wdrożenia.

    Zwróć uwagę, że oba moduły są wymienione na liście i że ich typy są wyświetlane jako Microsoft.Resources/deployments. Moduł toy-dog-website jest wymieniony dwa razy, ponieważ jego dane wyjściowe również znajdują się w szablonie.

    Zrzut ekranu witryny Azure Portal przedstawiający szczegóły głównego wdrożenia.

  6. Wybierz wdrożenia toy-dog-cdn i toy-dog-website i przejrzyj zasoby wdrożone w każdym z nich. Zwróć uwagę, że odpowiadają zasobom zdefiniowanym w odpowiednich modułach.