Øvelse – refactor din Bicep-fil for at bruge moduler

Fuldført

Notat

Denne øvelse er valgfri. Hvis du vil fuldføre det, skal du bruge et Azure abonnement, før du begynder. Hvis du ikke har en Azure konto eller ikke vil oprette en nu, kan du læse instruktionerne for at forstå begreberne.

I denne øvelse skal du opdatere den Bicep-fil, du tidligere har oprettet, så den bruger et modul til Azure App Service-ressourcerne. Moduler hjælper med at holde hensigten med hovedfilen tydeligere. Du kan genbruge App Service-modulet i andre Bicep-filer, hvis du vælger det.

Under processen skal du:

  • Tilføj et nyt modul, og flyt App Service-ressourcerne ind i det.
  • Reference til modulet fra den primære Bicep-fil.
  • Tilføj et output for App Service-appens værtsnavn, og udgiv det fra udrulningerne af modulet og Bicep-filen.
  • Test installationen for at sikre, at Bicep-filen er gyldig.

Tilføj en ny modulfil

Opret et separat modul til dine App Service-ressourcer:

  1. I Visual Studio Code skal du oprette en ny mappe med navnet moduler i den samme mappe, hvor du oprettede din main.bicep-fil . I mappen moduler skal du oprette en fil med navnet appService.bicep. Gem filen.

  2. Føj følgende indhold til 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
      }
    }
    

    Bemærk, at du har kopieret parametrene og variablerne fra din main.bicep Bicep-fil, da filen appService.bicep Bicep skal være selvstændig.

  3. Gem ændringerne i filen. Bemærk, at Visual Studio Code ikke viser dig nogen røde squiggles for at angive advarsler om manglende variabler, manglende parametre eller ugyldige ressourcer.

Føj en reference til modulet fra den overordnede Bicep-fil

Nu, hvor du har oprettet et komplet modul for at installere App Service-ressourcerne, kan du se modulet i den overordnede Bicep-fil. Da modulet installerer App Service-ressourcerne, kan du slette de tilknyttede ressourcer og variabler fra den overordnede fil.

  1. I filen main.bicep skal du slette App Service-ressourcerne og variabeldefinitionerne for appServicePlanName og appServicePlanSkuName. Slet ikke App Service-parametrene, fordi du stadig har brug for dem. Du skal heller ikke slette parametrene, variablen eller ressourcerne for lagerkontoen.

  2. Nederst i filen main.bicep skal du tilføje følgende Bicep-kode:

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

    Bemærk, at du angiver parametrene for dit modul ved at referere til parametrene i den overordnede Bicep-fil.

  3. Gem ændringerne i filen.

Tilføj værtsnavnet som et output

Vis appens værtsnavn fra både modulet og den overordnede fil:

  1. Tilføj følgende Bicep-kode nederst i filen appService.bicep:

    output appServiceAppHostName string = appServiceApp.properties.defaultHostName
    

    Denne kode erklærer, at et output for dette modul, som kaldes appServiceAppHostName, vil være af typen string. Outputtet henter sin værdi fra egenskaben defaultHostName for App Service-appen.

  2. Gem ændringerne i filen.

    Outputtet er erklæret i App Service-modulet. Den overordnede fil kan læse den igennem appService.outputs.appServiceAppHostName, men den medtages ikke automatisk i outputtet for den overordnede installation. Føj et matchende output til den overordnede fil, så en person, der undersøger udrulningen main , kan hente det der. Dette almindelige, ikke-hemmelige output kan også læses fra modulets indlejrede udrulningspost af en bruger med de påkrævede læserettigheder til udrulningen.

  3. Åbn filen main.bicep, og tilføj følgende kode nederst i filen:

    output appServiceAppHostName string = appService.outputs.appServiceAppHostName
    

    Bemærk, at dette output er erklæret på samme måde som outputtet i modulet. Men denne gang refererer du til modulets output i stedet for en ressourceegenskab.

  4. Gem ændringerne i filen.

Bekræft dine Bicep-filer

Når du har fuldført alle de foregående ændringer, bør din main.bicep-fil se ud som i dette eksempel:

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 skal se ud som i dette eksempel:

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

Hvis enten Bicep-filen ikke stemmer overens, skal du kopiere eksemplet eller justere filen, så den stemmer overens med eksemplet.

Installer den opdaterede Bicep-fil

Notat

Brug det samme abonnement og den samme ressourcegruppe i disse øvelser. Anvend alle ressourcenavne- eller placeringsparametre igen fra den foregående installation. Ellers bruges standarderne i skabelonen igen.

Fortsæt med at angive environmentType til nonprod og bruge den samme opgaveressourcegruppe til denne gennemgang. Værdien prod illustrerer en betalt produktionskonfiguration og ikke et trin, der skal køres i disse øvelser. Før du bruger den til et separat miljø, skal du gennemse forudsætningerne for udrulning af produktion i Vælg SKU'er for ressourcer i enheden Tilføj fleksibilitet ved hjælp af parametre og variabler.

Kør følgende Azure CLI-kommando i terminalen.

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

Kør følgende Azure PowerShell-kommando i terminalen.

New-AzResourceGroupDeployment `
  -ResourceGroupName $resourceGroupName `
  -Name main `
  -TemplateFile main.bicep `
  -environmentType nonprod

Kontrollér din installation

Bekræft, at modulet er installeret, og returnerede appens værtsnavn:

  1. Gå tilbage til Azure-portalen i din browser. Gå til din ressourcegruppe, og åbn Installationer.

  2. Find udrulningen main og den indlejrede appService installation. En vellykket kørsel opretter eller opdaterer disse navngivne poster. Andre udrulninger kan også være angivet.

    Skærmbillede af Azure portalinstallationshistorik, der viser vellykkede hoved- og appService-installationer.

  3. Vælg den installation, der hedder main. Bekræft, at den seneste handling lykkedes, og svarer til den kommando, du lige har kørt, og vælg derefter Udrulningsoplysninger for at udvide listen over udrullede ressourcer.

    Bemærk, at vores modulinstallation vises på listen.

    Skærmbillede af Azure portalinstallationsoplysninger, der viser App Service-modulet.

  4. Vælg fanen Output. Bemærk, at der er et output med navnet appServiceAppHostName med værtsnavnet på din App Service-app. Kopiér værtsnavnet til udklipsholderen.

    Skærmbillede af Azure portalinstallationsoutput, der viser App Service-appens værtsnavn.

  5. Åbn en ny browserfane, og indsæt det værtsnavn, du har kopieret. Du bør kunne se standardsiden for App Service-velkomstsiden.

    Skærmbillede af standard velkomstsiden for en Azure App Service app.

Tillykke! Du har udrullet grundlaget for en fantastisk app.