Øvelse – Legg til parametere og variabler i En Bicep-fil
Note
Denne øvelsen er valgfri. Hvis du vil fullføre denne øvelsen, må du opprette et Azure-abonnement før du begynner. Hvis du ikke har en Azure-konto eller ikke vil opprette en på dette tidspunktet, kan du lese gjennom instruksjonene slik at du forstår informasjonen som presenteres.
I denne øvelsen oppdaterer du Bicep-filen du opprettet tidligere, slik at den:\
- Godtar parametere for ressursplasseringer og navn.
- Bruker forretningsreglene til å velge de riktige SKU-ene for ressursene som distribueres.
Under prosessen gjør du følgende:
- Oppdater Bicep-filen for å inkludere en
locationparameter. - Oppdater Bicep-filen for å inkludere parametere og variabler for ressursnavnene.
- Bruk uttrykk til å angi standardverdier for parameterne.
- Oppdater Bicep-filen for å inkludere variabler for SKU-en for hver ressurs.
- Test distribusjonen for å sikre at Bicep-filen er gyldig.
Legg til parametere for plasserings- og ressursnavn
Legg til følgende kode øverst i Bicep-filen i main.bicep-filen i Visual Studio Code:
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 legger til gule bølgete linjer under hver parameter og variabelt navn for å indikere at de ikke brukes i Bicep-filen. Du løser dette problemet snart.
Legg merke til at du bruker uttrykk som inkluderer streng interpolering og
uniqueString()-funksjonen til å definere standard parameterverdier. Noen som distribuerer denne Bicep-filen, kan overstyre standard parameterverdier ved å angi verdiene ved distribusjonstidspunktet, men de kan ikke overstyre variabelverdiene.Legg også merke til at du bruker en variabel for azure App Service-plannavnet, men du bruker parametere for de andre navnene. Lagringskontoer og App Service-apper trenger globalt unike navn, men apptjenesteplannavn må bare være unike i ressursgruppen. Denne forskjellen betyr at det ikke er en bekymring å bruke samme apptjenesteplannavn på tvers av ulike distribusjoner, så lenge distribusjonene alle går inn i forskjellige ressursgrupper.
Tips
Du angir at
location-parameteren skal settes tilwestus3. Vanligvis oppretter du ressurser på samme plassering som ressursgruppen ved hjelp avresourceGroup().location-egenskapen. Men når du arbeider med Microsoft Learn-sandkassen, må du bruke visse Azure-områder som ikke samsvarer med ressursgruppens plassering.Finn stedene i ressursdefinisjonene der egenskapene
locationognameer angitt, og oppdater dem for å bruke parameterverdiene. Når du er ferdig, skal ressursdefinisjonene i Bicep-filen se slik ut: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 } }Lagre endringene i filen.
Angi SKU-ene automatisk for hver miljøtype
Legg til følgende Bicep-parameter under parameterne du opprettet i den forrige oppgaven, i main.bicep-filen i Visual Studio Code:
@allowed([ 'nonprod' 'prod' ]) param environmentType stringLegg merke til at du definerer en parameter med et sett med tillatte verdier, men du angir ikke en standardverdi for denne parameteren.
Legg til følgende variabeldefinisjoner under linjen som deklarerer
appServicePlanNamevariabelen:var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS' var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'Legg merke til at du angir disse variableverdiene ved å bruke ternæroperatoren til å uttrykke noe
if/then/elselogikk.Finn stedene i ressursdefinisjonene der egenskapene for
skuer angitt, og oppdater dem for å bruke parameterverdiene. Når du er ferdig, skal ressursdefinisjonene i Bicep-filen se slik ut: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 } }Legg merke til at du ikke har parameterisert alt. Du har angitt noen egenskaper direkte i ressursdefinisjonene, der du vet at disse verdiene ikke kommer til å endres mellom distribusjoner.
Lagre endringene i filen.
Bekreft En Bicep-fil
Når du har fullført alle de foregående endringene, skal main.bicep-filen se slik ut:
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 samsvarer, kopierer du eksemplet eller justerer filen slik at den samsvarer med eksemplet.
Distribuer den oppdaterte Bicep-filen
Kjør følgende Azure CLI-kommando i terminalen.
az deployment group create \
--name main \
--template-file main.bicep \
--parameters environmentType=nonprod
Kjør følgende Azure PowerShell-kommando i terminalen.
New-AzResourceGroupDeployment `
-Name main `
-TemplateFile main.bicep `
-environmentType nonprod
Legg merke til at du eksplisitt angir verdien for environmentType-parameteren når du utfører distribusjonen. Du trenger ikke å angi de andre parameterverdiene, fordi de har gyldige standardverdier.
Kontrollere distribusjonen
Gå tilbake til Azure Portal i nettleseren, og gå til ressursgruppen. Du vil fortsatt se én vellykket distribusjon fordi distribusjonen brukte samme navn som den første distribusjonen.
Velg koblingen 1 Vellykket.
Velg distribusjonen kalt hoved, og velg deretter distribusjonsdetaljer for å utvide listen over distribuerte ressurser.
Legg merke til at en ny App Service-app- og lagringskonto er distribuert med tilfeldig genererte navn.