Övning – Omstrukturera mallen för att använda moduler

Slutförd

I den här övningen uppdaterar du Bicep-mallen som du skapade tidigare så att den använder en modul för Azure App Service-resurserna. Moduler hjälper till att hålla avsikten med huvudmallen tydligare. Du kan återanvända App Service-modulen i andra mallar om du väljer att göra det.

Under processen gör du följande:

  • Lägg till en ny modul och flytta App Service-resurserna till den.
  • Referera till modulen från huvudmallen för Bicep.
  • Lägg till utdata för App Service-appens värdnamn och generera det från modul- och malldistributionerna.
  • Testa distributionen för att säkerställa att mallen är giltig.

Lägga till en ny modulfil

  1. I Visual Studio Code skapar du en ny mapp med namnet moduler i samma mapp där du skapade main.bicep-filen. I mappen modules skapar du en fil med namnet appService.bicep. Spara filen.

  2. Lägg till följande innehåll i filen appService.bicep :

    param location string
    param appServiceAppName string
    
    @allowed([
      'nonprod'
      'prod'
    ])
    param environmentType string
    
    var appServicePlanName = 'toy-product-launch-plan'
    var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'
    
    resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: appServicePlanSkuName
      }
    }
    
    resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
      }
    }
    

    Observera att du har kopierat parametrarna och variablerna från din main.bicep-mall , eftersom mallen appService.bicep måste vara fristående.

  3. Spara ändringarna i filen. Observera att Visual Studio Code inte visar några röda squiggles för att indikera varningar om saknade variabler, saknade parametrar eller ogiltiga resurser.

Lägga till en referens till modulen från den överordnade mallen

Nu när du har en fullständig modul för att distribuera App Service-resurserna kan du läsa modulen i den överordnade mallen. Eftersom modulen distribuerar App Service-resurserna kan du ta bort de associerade resurserna och variablerna från den överordnade mallen.

  1. Ta bort App Service-resurserna och appServicePlanName appServicePlanSkuName variabeldefinitionerna i filen main.bicep. Ta inte bort App Service-parametrarna eftersom du fortfarande behöver dem. Ta inte heller bort lagringskontoparametrarna, variabeln eller resurserna.

  2. Lägg till följande Bicep-kod längst ned i filen main.bicep :

    module appService 'modules/appService.bicep' = {
      name: 'appService'
      params: {
        location: location
        appServiceAppName: appServiceAppName
        environmentType: environmentType
      }
    }
    

    Observera att du anger parametrarna för modulen genom att referera till parametrarna i den överordnade mallen.

  3. Spara ändringarna i filen.

Lägg till värdnamnet som utdata

  1. Lägg till följande Bicep-kod längst ned i filen appService.bicep :

    output appServiceAppHostName string = appServiceApp.properties.defaultHostName
    

    Den här koden deklarerar att utdata för den här modulen, som får namnet appServiceAppHostName, kommer att vara av typen string. Utdata tar dess värde från defaultHostName egenskapen för App Service-appen.

  2. Spara ändringarna i filen.

    Utdata deklareras i en Bicep-fil som vi ska använda som en modul, så den kommer endast att vara tillgänglig för den överordnade mallen. Du måste också returnera utdata till den person som distribuerade mallen.

  3. Öppna filen main.bicep och lägg till följande kod längst ned i filen:

    output appServiceAppHostName string = appService.outputs.appServiceAppHostName
    

    Observera att utdata deklareras på ett liknande sätt som utdata i modulen. Men den här gången refererar du till modulens utdata i stället för en resursegenskap.

  4. Spara ändringarna i filen.

Verifiera dina Bicep-filer

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

param location string = 'eastus'
param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}'
param appServiceAppName string = 'toylaunch${uniqueString(resourceGroup().id)}'

@allowed([
  'nonprod'
  'prod'
])
param environmentType string

var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS'

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: storageAccountSkuName
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
  }
}

module appService 'modules/appService.bicep' = {
  name: 'appService'
  params: {
    location: location
    appServiceAppName: appServiceAppName
    environmentType: environmentType
  }
}

output appServiceAppHostName string = appService.outputs.appServiceAppHostName

Filen appService.bicep bör se ut så här:

param location string
param appServiceAppName string

@allowed([
  'nonprod'
  'prod'
])
param environmentType string

var appServicePlanName = 'toy-product-launch-plan'
var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'

resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
  name: appServicePlanName
  location: location
  sku: {
    name: appServicePlanSkuName
  }
}

resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = {
  name: appServiceAppName
  location: location
  properties: {
    serverFarmId: appServicePlan.id
    httpsOnly: true
  }
}

output appServiceAppHostName string = appServiceApp.properties.defaultHostName

Om någon av filerna inte matchar kopierar du exemplet eller justerar mallen så att den matchar exemplet.

Distribuera den uppdaterade Bicep-mallen

Kör följande Azure CLI-kommando i terminalen.

az deployment group create \
  --template-file main.bicep \
  --parameters environmentType=nonprod

Kör följande Azure PowerShell-kommando i terminalen.

New-AzResourceGroupDeployment `
  -TemplateFile main.bicep `
  -environmentType nonprod

Kontrollera distributionen

  1. Gå tillbaka till Azure-portalen i webbläsaren. Gå till resursgruppen så ser du att det nu finns två lyckade distributioner.

  2. Välj länken 2 Lyckades . Observera att du har en distribution med namnet main i listan och en ny distribution med namnet appService.

    Screenshot of the Azure portal interface for the deployments, with the two deployments listed and succeeded statuses.

  3. Välj distributionen som kallas main och välj sedan Distributionsinformation för att expandera listan över distribuerade resurser.

    Observera att vår moduldistribution visas i listan.

    Screenshot of the Azure portal interface for the specific deployment, with one resource listed.

  4. Välj fliken Utdata . Observera att det finns utdata som heter appServiceAppHostName med värdnamnet för din App Service-app. Kopiera värdnamnet till Urklipp.

    Screenshot of the Azure portal interface for the specific deployment's outputs.

  5. Öppna en ny webbläsarflik och klistra in värdnamnet som du kopierade. Du bör se standardsidan för apptjänstens välkomstsida.

    Screenshot of the default App Service welcome page.

Gratulerar! Du har distribuerat grunden för en bra app.