Øvelse – refactor din Bicep-fil for at bruge moduler
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:
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.
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.
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.
I filen main.bicep skal du slette App Service-ressourcerne og variabeldefinitionerne for
appServicePlanNameogappServicePlanSkuName. Slet ikke App Service-parametrene, fordi du stadig har brug for dem. Du skal heller ikke slette parametrene, variablen eller ressourcerne for lagerkontoen.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.
Gem ændringerne i filen.
Tilføj værtsnavnet som et output
Vis appens værtsnavn fra både modulet og den overordnede fil:
Tilføj følgende Bicep-kode nederst i filen appService.bicep:
output appServiceAppHostName string = appServiceApp.properties.defaultHostNameDenne kode erklærer, at et output for dette modul, som kaldes
appServiceAppHostName, vil være af typenstring. Outputtet henter sin værdi fra egenskabendefaultHostNamefor App Service-appen.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 udrulningenmain, 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.Åbn filen main.bicep, og tilføj følgende kode nederst i filen:
output appServiceAppHostName string = appService.outputs.appServiceAppHostNameBemæ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.
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:
Gå tilbage til Azure-portalen i din browser. Gå til din ressourcegruppe, og åbn Installationer.
Find udrulningen
mainog den indlejredeappServiceinstallation. En vellykket kørsel opretter eller opdaterer disse navngivne poster. Andre udrulninger kan også være angivet.
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.
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.
Åbn en ny browserfane, og indsæt det værtsnavn, du har kopieret. Du bør kunne se standardsiden for App Service-velkomstsiden.
Tillykke! Du har udrullet grundlaget for en fantastisk app.