Övning – Omstrukturera Bicep-filen för att använda moduler

Slutförd

I den här övningen uppdaterar du Bicep-filen 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 huvudfilen tydligare. Du kan återanvända App Service-modulen i andra Bicep-filer 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 Bicep-huvudfilen.
  • Lägg till utdata för App Service-appens värdnamn och skicka det från modulen och Bicep-fildistributionerna.
  • Testa distributionen för att säkerställa att Bicep-filen ä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@2024-04-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: appServicePlanSkuName
      }
    }
    
    resource appServiceApp 'Microsoft.Web/sites@2024-04-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
      }
    }
    

    Observera att du har kopierat parametrarna och variablerna från filen main.bicep Bicep eftersom filen appService.bicep 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ägg till en referens till modulen från den överordnade Bicep-filen

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

  1. . 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 Bicep-filen.

  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. Outputen kommer att ta sitt 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 Bicep-filen. Du måste också returnera utdata till den person som distribuerade filen.

  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@2024-04-01' = {
  name: appServicePlanName
  location: location
  sku: {
    name: appServicePlanSkuName
  }
}

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

output appServiceAppHostName string = appServiceApp.properties.defaultHostName

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

Distribuera den uppdaterade Bicep-filen

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

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

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

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

Kontrollera din distribution

  1. Gå tillbaka till Azure-portalen i webbläsaren. Gå till resursgruppen; det finns nu 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.

    Skärmbild av Azure Portal-gränssnittet för distributionerna, med de två distributionerna listade och lyckade statusar.

  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.

    Skärmbild av Azure Portal-gränssnittet för den specifika distributionen, med en resurs i listan.

  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 ditt urklipp.

    Skärmbild av Azure Portal-gränssnittet för den specifika distributionens utdata.

  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.

    Skärmbild av standardsidan för apptjänstens välkomstsida.

Grattis! Du har lyckats distribuera de grundläggande komponenterna för en bra app.