Övning – Använda moduler från registret

Slutförd

I föregående övning publicerade du CDN- och webbplatsmodulerna till leksaksföretagets register. Nu vill du visa teamet som utvecklar leksakshunden hur de ska använda modulerna för sin egen distribution.

I den här övningen kommer du att:

  • Skapa en Bicep-fil som innehåller moduler från ditt privata register.
  • Lägg till referenser till modulerna i registret.
  • Skapa och inspektera Bicep-filen för att förstå hur modulåterställningsprocessen fungerar.
  • Växla till att använda ett registeralias.
  • Distribuera Bicep-filen till Azure.

Skapa en Bicep-fil

  1. Skapa en ny fil med namnet main.bicep i Visual Studio Code.

  2. Spara den tomma filen så att Visual Studio Code läser in Bicep-verktyget.

    Du kan antingen välja Spara som-fil> eller välja Ctrl+S i Windows (⌘+S på macOS). Kom ihåg var du sparar filen. Du kanske till exempel vill skapa en mallmapp för att spara den.

Lägg till modulerna i Bicep-filen

  1. Lägg till följande parametrar och variabler i filen main.bicep:

    @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. Under parametrarna och variablerna använder du följande kod för att lägga till webbplatsmodulen från registret. Ersätt YOUR_CONTAINER_REGISTRY_NAME med namnet på ditt privata register.

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

    Observera att Bicep visar röda vågiga linjer under modulidentifieraren när du börjar skriva, men sedan försvinner de vågiga raderna. Det här beteendet inträffar eftersom Bicep-tillägget för Visual Studio Code läser modulen från registret och sparar den i det lokala filsystemet.

  3. Under modulen som du skapade använder du följande kod för att lägga till CDN-modulen från registret. Ersätt YOUR_CONTAINER_REGISTRY_NAME med namnet på ditt privata register.

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

Skapa och inspektera Bicep-filen

Här skapar du Bicep-filen till en JSON ARM-mall. Normalt behöver du inte göra en version, men det är användbart när du lär dig hur moduler fungerar.

  1. I Visual Studio Code-terminalen kör du följande kommando för att skapa Bicep-filen till en JSON-fil:

    az bicep build --file main.bicep
    

    Bicep skapar en fil med namnet main.json i samma mapp som main.bicep-filen .

  2. Öppna filen main.json .

    Observera att i avsnittet i resources JSON ARM-mallen, som börjar runt rad 134, har vissa resurser typen Microsoft.Resources/deployments. Dessa resurser representerar de moduldistributioner som definierades i modulen som du lade till från registret.

  1. I Visual Studio Code-terminalen kör du följande kommando för att skapa Bicep-filen till en JSON-fil:

    bicep build main.bicep
    

    Bicep skapar en fil med namnet main.json i samma mapp som main.bicep-filen .

  2. Öppna filen main.json .

    Observera att i avsnittet i resources JSON ARM-mallen, som börjar runt rad 134, har vissa resurser typen Microsoft.Resources/deployments. Dessa resurser representerar de moduldistributioner som definierades i modulen som du lade till från registret.

Skapa ett registeralias

Du bestämmer dig för att skapa ett registeralias i stället för att bädda in register-URL:en i Bicep-filen. Den här metoden gör Bicep-filen enklare att läsa.

  1. Skapa en ny fil med namnet bicepconfig.json i Visual Studio Code. Skapa den i samma mapp som main.bicep-filen .

  2. Klistra in följande kod i filen bicepconfig.json . Ersätt YOUR_CONTAINER_REGISTRY_NAME med namnet på ditt privata register.

    {
      "moduleAliases": {
        "br": {
          "ToyCompanyRegistry": {
            "registry": "YOUR_CONTAINER_REGISTRY_NAME.azurecr.io"
          }
        }
      }
    }
    
  3. Spara filen.

Använda registeraliaset

Här uppdaterar du Bicep-filen för att använda registeraliaset i stället för att referera direkt till registret.

  1. Öppna filen main.bicep.

  2. Leta reda på definitionen av modulen website och ändra definitionen så att den inkluderar registeraliaset:

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

    Dricks

    Se till att ändra början av modulsökvägen från br: till br/. ToyCompanyRegistryEfter ändrar du också snedstreckstecknet (/) till ett kolon (:).

  3. Gör en liknande ändring i modulen cdn :

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

Verifiera Bicep-filen

När du har slutfört alla föregående ändringar bör filen main.bicep se ut så här:

@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
  }
}

Om filen inte matchar kopierar du exemplet eller justerar mallen så att den matchar exemplet.

Distribuera till Azure

I Visual Studio Code-terminalen distribuerar du mallen till Azure genom att köra följande kommando. Den här processen kan ta några minuter att slutföra en lyckad distribution.

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

Verifiera distributionen

  1. Gå till Azure Portal och kontrollera att du är i sandbox-prenumerationen:

    1. Välj din avatar i det övre högra hörnet på sidan.
    2. Välj Växla katalog. Välj katalogen Sandbox-miljö för Microsoft Learn i listan.
  2. På den vänstra panelen väljer du Resursgrupper.

  3. Välj [resursgruppsnamn för sandbox-miljö].

  4. Välj Distributioner på den vänstra menyn.

    Skärmbild av Azure Portal som visar resursgruppen med menyalternativet Distributioner markerat.

    Observera att tre distributioner visas:

    • main representerar distributionen av den överordnade Bicep-filen.
    • toy-dog-cdn och toy-dog-website representerar de moduler som du inkluderade i filen main.bicep .
  5. Välj huvuddistributionen och expandera Distributionsinformation.

    Observera att båda modulerna visas och att deras typer visas som Microsoft.Resources/deployments. Modulen toy-dog-website visas två gånger eftersom dess utdata också refereras i mallen.

    Skärmbild av Azure Portal som visar information om huvuddistributionen.

  6. Välj distributionerna toy-dog-cdn och toy-dog-website och granska de resurser som distribueras i var och en. Observera att de motsvarar de resurser som definierats i respektive moduler.