Övning – Omstrukturera Bicep-filen för att använda moduler
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
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@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.
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.
. 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 Bicep-filen.
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
. Outputen kommer att ta sitt 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 Bicep-filen. Du måste också returnera utdata till den person som distribuerade filen.
Ö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@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
Gå tillbaka till Azure-portalen 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 ditt 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 lyckats distribuera de grundläggande komponenterna för en bra app.