Oefening: modules uit uw register gebruiken

Voltooid

In de vorige oefening hebt u de CDN- en websitemodules gepubliceerd in het register van uw speelgoedbedrijf. Nu wilt u het team laten zien dat de speelgoedhond ontwikkelt hoe u de modules gebruikt voor een eigen implementatie.

In deze oefening gaat u het volgende doen:

  • Maak een Bicep-bestand dat modules uit uw privéregister bevat.
  • Voeg verwijzingen toe naar de modules in het register.
  • Bouw en inspecteer het Bicep-bestand om te begrijpen hoe het herstelproces van de module werkt.
  • Schakel over naar het gebruik van een registeralias.
  • Implementeer uw Bicep-bestand in Azure.

Een Bicep-bestand maken

  1. Maak in Visual Studio Code een nieuw bestand met de naam main.bicep.

  2. Sla het lege bestand op zodat Visual Studio Code de Bicep-hulpprogramma's laadt.

    U kunt Bestand>opslaan als selecteren of Ctrl+S selecteren in Windows (⌘+S in macOS). Vergeet niet waar u het bestand opslaat. U kunt bijvoorbeeld een map met sjablonen maken om deze op te slaan in.

De modules toevoegen aan het Bicep-bestand

  1. Voeg in het bestand main.bicep de volgende parameters en variabelen toe:

    @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. Gebruik onder de parameters en variabelen de volgende code om de websitemodule toe te voegen vanuit uw register. Vervang door YOUR_CONTAINER_REGISTRY_NAME de naam van uw privé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
      }
    }
    

    Bicep toont rode golvende lijnen onder de module-id wanneer u begint te typen, maar dan gaan de golvende lijnen weg. Dit gedrag treedt op omdat de Bicep-extensie voor Visual Studio Code de module uit het register leest en opslaat in uw lokale bestandssysteem.

  3. Gebruik onder de module die u hebt gemaakt de volgende code om de CDN-module toe te voegen vanuit uw register. Vervang door YOUR_CONTAINER_REGISTRY_NAME de naam van uw privéregister.

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

Uw Bicep-bestand bouwen en inspecteren

Hier bouwt u het Bicep-bestand op een JSON ARM-sjabloon. Normaal gesproken hoeft u geen build uit te voeren, maar het is handig wanneer u leert hoe modules werken.

  1. Voer in de Visual Studio Code-terminal de volgende opdracht uit om het Bicep-bestand te bouwen naar een JSON-bestand:

    az bicep build --file main.bicep
    

    Bicep maakt een bestand met de naam main.json in dezelfde map als het bestand main.bicep .

  2. Open het bestand main.json .

    Zoals u ziet, hebben sommige resources het type Microsoft.Resources/deploymentsin de resources sectie van de JSON ARM-sjabloon, te beginnen rond regel 134. Deze resources vertegenwoordigen de module-implementaties die zijn gedefinieerd in de module die u uit het register hebt toegevoegd.

  1. Voer in de Visual Studio Code-terminal de volgende opdracht uit om het Bicep-bestand te bouwen naar een JSON-bestand:

    bicep build main.bicep
    

    Bicep maakt een bestand met de naam main.json in dezelfde map als het bestand main.bicep .

  2. Open het bestand main.json .

    Zoals u ziet, hebben sommige resources het type Microsoft.Resources/deploymentsin de resources sectie van de JSON ARM-sjabloon, te beginnen rond regel 134. Deze resources vertegenwoordigen de module-implementaties die zijn gedefinieerd in de module die u uit het register hebt toegevoegd.

Een registeralias maken

U besluit een registeralias te maken in plaats van de register-URL in te sluiten in uw Bicep-bestand. Deze methode maakt het Bicep-bestand gemakkelijker te lezen.

  1. Maak in Visual Studio Code een nieuw bestand met de naam bicepconfig.json. Maak deze in dezelfde map als het bestand main.bicep .

  2. Plak de volgende code in het bestand bicepconfig.json . Vervang door YOUR_CONTAINER_REGISTRY_NAME de naam van uw privéregister.

    {
      "moduleAliases": {
        "br": {
          "ToyCompanyRegistry": {
            "registry": "YOUR_CONTAINER_REGISTRY_NAME.azurecr.io"
          }
        }
      }
    }
    
  3. Sla het bestand op.

De registeralias gebruiken

Hier werkt u uw Bicep-bestand bij om de registeralias te gebruiken in plaats van rechtstreeks naar het register te verwijzen.

  1. Open het bestand main.bicep .

  2. Zoek de definitie van de website module en wijzig de definitie zodat deze de registeralias bevat:

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

    Tip

    Zorg ervoor dat u het begin van het modulepad wijzigt van br: in br/. Wijzig daarna ToyCompanyRegistryook het teken slash (/) in een dubbele punt (:).

  3. Breng een vergelijkbare wijziging aan in de cdn module:

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

Uw Bicep-bestand controleren

Nadat u alle voorgaande wijzigingen hebt voltooid, moet het bestand main.bicep er als volgt uitzien:

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

Als het bestand niet overeenkomt, kopieert u het voorbeeld of past u de sjabloon aan zodat het overeenkomt met het voorbeeld.

Implementeren op Azure

Implementeer de sjabloon in de Visual Studio Code-terminal in Azure door de volgende opdracht uit te voeren. Dit proces kan enkele minuten duren om een geslaagde implementatie te voltooien.

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

De implementatie controleren

  1. Ga naar Azure Portal en zorg ervoor dat u zich in het sandbox-abonnement bevindt:

    1. Selecteer uw avatar in de rechterbovenhoek van de pagina.
    2. Selecteer Schakelen tussen directory's. In de lijst kiest u de map Microsoft Learn Sandbox.
  2. Selecteer Resourcegroepen in het linkerdeelvenster.

  3. Selecteer [naam sandboxresourcegroep].

  4. Selecteer Implementaties in het linkermenu.

    Screenshot of the Azure portal that shows the resource group, with the Deployments menu item highlighted.

    U ziet dat er drie implementaties worden vermeld:

    • main vertegenwoordigt de implementatie van uw bovenliggende Bicep-bestand.
    • speelgoed-dog-cdn en speelgoedhond-website vertegenwoordigen de modules die u in uw main.bicep-bestand hebt opgenomen.
  5. Selecteer de hoofdimplementatie en vouw implementatiedetails uit.

    U ziet dat beide modules worden weergegeven en dat hun typen worden weergegeven als Microsoft.Resources/deployments. De toy-dog-website module wordt twee keer weergegeven omdat er ook naar de uitvoer in de sjabloon wordt verwezen.

    Screenshot of the Azure portal that shows the details of the main deployment.

  6. Selecteer de implementaties van speelgoed-dog-cdn en speelgoedhondenwebsites en bekijk de resources die in elke site zijn geïmplementeerd. U ziet dat ze overeenkomen met de resources die zijn gedefinieerd in de respectieve modules.