Övning – Lägga till parametrar och variabler i din Bicep-mall
I den här övningen uppdaterar du Bicep-mallen som du skapade tidigare så att den:\
- Accepterar parametrar för resursplatser och namn.
- Använder dina affärsregler för att välja rätt SKU:er för de resurser som distribueras.
Under processen gör du följande:
- Uppdatera mallen så att den innehåller en
location
parameter. - Uppdatera mallen så att den innehåller parametrar och variabler för resursnamnen.
- Använd uttryck för att ange standardvärden för parametrarna.
- Uppdatera mallen så att den innehåller variabler för SKU:n för varje resurs.
- Testa distributionen för att säkerställa att mallen är giltig.
Lägg till parametrarna för plats och resursnamn
I filen main.bicep i Visual Studio Code lägger du till följande kod överst i 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-lintern lägger till gula vågiga linjer under varje parameter och variabelnamn för att indikera att de inte används i mallen. Du kommer snart att åtgärda det här problemet.
Observera att du använder uttryck som innehåller stränginterpolation och
uniqueString()
funktionen för att definiera standardparametervärden. Någon som distribuerar den här mallen kan åsidosätta standardparametervärdena genom att ange värdena vid distributionstillfället, men de kan inte åsidosätta variabelvärdena.Observera också att du använder en variabel för Azure App Service-plannamnet, men du använder parametrar för de andra namnen. Lagringskonton och App Service-appar behöver globalt unika namn, men App Service-plannamn behöver bara vara unika i resursgruppen. Den här skillnaden innebär att det inte är ett problem att använda samma App Service-plannamn för olika distributioner, så länge distributionerna alla går in i olika resursgrupper.
Dricks
Du anger att parametern
location
ska vara inställd påwestus3
. Normalt skapar du resurser på samma plats som resursgruppen med hjälpresourceGroup().location
av egenskapen . Men när du arbetar med sandbox-miljön i Microsoft Learn måste du använda vissa Azure-regioner som inte matchar resursgruppens plats.Hitta platserna i resursdefinitionerna där
location
egenskaperna ochname
anges och uppdatera dem så att de använder parametervärdena. När du är klar bör resursdefinitionerna i Bicep-filen se ut så här: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@2023-12-01' = { name: appServicePlanName location: location sku: { name: 'F1' } } resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true } }
Spara ändringarna i filen.
Ange SKU:er automatiskt för varje miljötyp
I filen main.bicep i Visual Studio Code lägger du till följande Bicep-parameter under parametrarna som du skapade i föregående uppgift:
@allowed([ 'nonprod' 'prod' ]) param environmentType string
Observera att du definierar en parameter med en uppsättning tillåtna värden, men du anger inte något standardvärde för den här parametern.
Lägg till följande variabeldefinitioner under raden som deklarerar
appServicePlanName
variabeln:var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS' var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'
Observera att du ställer in dessa variabler genom att använda operatorn ternary för att uttrycka viss
if/then/else
logik.Hitta de platser i resursdefinitionerna där
sku
egenskaperna anges och uppdatera dem så att de använder parametervärdena. När du är klar bör resursdefinitionerna i Bicep-filen se ut så här: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@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 inte har parametriserat allt. Du har angett vissa egenskaper direkt i resursdefinitionerna, där du vet att dessa värden inte kommer att ändras mellan distributionerna.
Spara ändringarna i filen.
Verifiera Bicep-filen
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 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@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
}
}
Om filen inte matchar kopierar du exemplet eller justerar filen 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
Observera att du uttryckligen anger värdet för parametern environmentType
när du kör distributionen. Du behöver inte ange de andra parametervärdena eftersom de har giltiga standardvärden.
Kontrollera distributionen
Gå tillbaka till Azure Portal i webbläsaren och gå till resursgruppen. Du ser fortfarande en lyckad distribution eftersom distributionen använde samma namn som den första distributionen.
Välj länken 1 Lyckades .
Välj den distribution som kallas main och välj sedan Distributionsinformation för att expandera listan över distribuerade resurser.
Observera att ett nytt App Service-app- och lagringskonto har distribuerats med slumpmässigt genererade namn.