Øvelse – Føj parametre og variabler til din Bicep-skabelon
I denne øvelse skal du opdatere den Bicep-skabelon, du tidligere har oprettet, så den:\
- Accepterer parametre for ressourceplaceringer og -navne.
- Bruger dine forretningsregler til at vælge de rigtige SKU'er for de ressourcer, der udrulles.
Under processen skal du:
- Opdater skabelonen, så den indeholder en
location
parameter. - Opdater skabelonen, så den indeholder parametre og variabler for ressourcenavnene.
- Brug udtryk til at angive standardværdier for parametrene.
- Opdater skabelonen, så den indeholder variabler for SKU'en for hver ressource.
- Test installationen for at sikre, at skabelonen er gyldig.
Tilføj parametrene for placering og ressourcenavn
I filen main.bicep i Visual Studio Code skal du føje følgende kode til toppen af filen:
param location string = 'eastus' param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}' param appServiceAppName string = 'toylaunch${uniqueString(resourceGroup().id)}' var appServicePlanName = 'toy-product-launch-plan'
Bicep linter tilføjer gule bølgestreger under hver parameter og hvert variabelnavn for at angive, at de ikke bruges i skabelonen. Du løser snart problemet.
Bemærk, at du bruger udtryk, der omfatter strenginterpolering og funktionen
uniqueString()
til at definere standardværdier for parametre. En person, der installerer denne skabelon, kan tilsidesætte standardparameterværdierne ved at angive værdierne på udrulningstidspunktet, men de kan ikke tilsidesætte variabelværdierne.Bemærk også, at du bruger en variabel til navnet på Azure App Service-abonnementet, men du bruger parametre til de andre navne. Lagerkonti og App Service-apps skal bruge globalt entydige navne, men App Service-abonnementsnavne skal kun være entydige i deres ressourcegruppe. Denne forskel betyder, at det ikke er et problem at bruge det samme App Service-plannavn på tværs af forskellige udrulninger, så længe udrulningerne alle går ind i forskellige ressourcegrupper.
Drikkepenge
Du angiver, at parameteren
location
skal angives tilwestus3
. Normalt ville du oprette ressourcer på samme placering som ressourcegruppen ved hjælp af egenskabenresourceGroup().location
. Men når du arbejder med Microsoft Learn-sandkassen, skal du bruge visse Azure-områder, der ikke svarer til ressourcegruppens placering.Find de steder i ressourcedefinitionerne, hvor egenskaberne
location
ogname
er angivet, og opdater dem, så de bruger parameterværdierne. Når du er færdig, bør ressourcedefinitionerne i din Bicep-fil se sådan ud:resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = { name: storageAccountName location: location sku: { name: 'Standard_LRS' } kind: 'StorageV2' properties: { accessTier: 'Hot' } } resource appServicePlan 'Microsoft.Web/serverfarms@2024-04-01' = { name: appServicePlanName location: location sku: { name: 'F1' } } resource appServiceApp 'Microsoft.Web/sites@2024-04-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true } }
Gem ændringerne i filen.
Angiv automatisk SKU'erne for hver miljøtype
I filen main.bicep i Visual Studio Code skal du tilføje følgende Bicep-parameter under de parametre, du oprettede i den forrige opgave:
@allowed([ 'nonprod' 'prod' ]) param environmentType string
Bemærk, at du definerer en parameter med et sæt tilladte værdier, men du angiver ikke en standardværdi for denne parameter.
Under den linje, der deklarerer variablen
appServicePlanName
, skal du tilføje følgende variabeldefinitioner:var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS' var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'
Bemærk, at du angiver disse variablers værdier ved hjælp af den ternære operator til at udtrykke nogle
if/then/else
logik.Find de steder i ressourcedefinitionerne, hvor egenskaberne for
sku
er angivet, og opdater dem til at bruge parameterværdierne. Når du er færdig, bør ressourcedefinitionerne i din Bicep-fil se sådan ud:resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = { name: storageAccountName location: location sku: { name: storageAccountSkuName } kind: 'StorageV2' properties: { accessTier: 'Hot' } } 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 ikke har parameteriseret alt. Du har angivet nogle egenskaber direkte i ressourcedefinitionerne, hvor du ved, at disse værdier ikke ændres mellem installationer.
Gem ændringerne i filen.
Bekræft din Bicep-fil
Når du har fuldført alle de foregående ændringer, bør filen main.bicep 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 appServicePlanName = 'toy-product-launch-plan'
var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS'
var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: storageAccountName
location: location
sku: {
name: storageAccountSkuName
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
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
}
}
Hvis filen ikke stemmer overens, skal du kopiere eksemplet eller justere filen, så den stemmer overens med eksemplet.
Installer den opdaterede Bicep-skabelon
Kør følgende Azure CLI-kommando i terminalen.
az deployment group create \
--name main \
--template-file main.bicep \
--parameters environmentType=nonprod
Kør følgende Azure PowerShell-kommando i terminalen.
New-AzResourceGroupDeployment `
-Name main `
-TemplateFile main.bicep `
-environmentType nonprod
Bemærk, at du eksplicit angiver værdien for parameteren environmentType
, når du udfører installationen. Du behøver ikke at angive de andre parameterværdier, fordi de har gyldige standardværdier.
Kontrollér din installation
Gå tilbage til Azure Portal i din browser, og gå til din ressourcegruppe. Du får stadig vist én vellykket installation, fordi installationen brugte det samme navn som den første installation.
Vælg linket 1 Lykkedes.
Vælg den installation, der kaldes hoved, og vælg derefter Oplysninger om installation for at udvide listen over udrullede ressourcer.
Bemærk, at der er installeret en ny App Service-app- og lagerkonto med tilfældigt genererede navne.