Övning – Omstrukturera mallen för att använda moduler
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
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.
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.
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.
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.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.
Spara ändringarna i filen.
Lägg till värdnamnet som utdata
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 typenstring
. Utdata tar dess värde fråndefaultHostName
egenskapen för App Service-appen.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.
Ö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.
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
Gå tillbaka till Azure Portal i webbläsaren. Gå till resursgruppen. det finns nu två lyckade distributioner.
Välj länken 2 Lyckades . Observera att du har en distribution med namnet main i listan och en ny distribution med namnet appService.
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.
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.
Öppna en ny webbläsarflik och klistra in värdnamnet som du kopierade. Du bör se standardsidan för apptjänstens välkomstsida.
Grattis! Du har distribuerat grunden för en bra app.