Definiera resurser
Bicep-mallar är de filer som du skapar och som definierar de Azure-resurser som ska distribueras.
Leksaksföretaget behöver skapa en återanvändbar Bicep-mall för produktlanseringar. Mallen måste distribuera ett Azure Storage-konto och Azure App Service-resurser, som kommer att användas för marknadsföring av varje ny produkt under lanseringen.
I den här lektionen får du lära dig hur du definierar en resurs i en Bicep-mall, hur resursnamn fungerar och hur du kan skapa resurser som är relaterade till varandra.
Kommentar
Kommandona i den här enheten visas för att illustrera begrepp. Kör inte kommandona än. Du kommer att öva på det du lär dig här snart.
Definiera en resurs
Det viktigaste du ska göra med Bicep-mallar är att definiera dina Azure-resurser. Här är ett exempel på hur en typisk resursdefinition ser ut i Bicep. I det här exemplet skapas ett lagringskonto med namnet toylaunchstorage
.
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: 'toylaunchstorage'
location: 'westus3'
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
Nu ska vi titta närmare på några viktiga delar i den här resursdefinitionen:
Nyckelordet
resource
i början talar om för Bicep att du är på väg att definiera en resurs.Sedan ger du resursen ett symboliskt namn. I exemplet är
storageAccount
resursens symboliska namn . Symboliska namn används i Bicep för att referera till resursen, men de visas aldrig i Azure.Microsoft.Storage/storageAccounts@2022-09-01
är resurstypen och API-versionen av resursen.Microsoft.Storage/storageAccounts
meddelar Bicep att du deklarerar ett Azure Storage-konto. Datumet2022-09-01
är den version av Azure Storage-API:et som Bicep använder när resursen skapas.Dricks
Bicep-tillägget för Visual Studio Code hjälper dig att hitta resurstyperna och API-versionerna för de resurser du skapar. Om du är bekant med ARM-mallar bör du tänka på att API-versionen matchar den version som du använder där också.
Du måste deklarera ett resursnamn, vilket är namnet som lagringskontot ska tilldelas i Azure. Du anger ett resursnamn med nyckelordet
name
.Viktigt!
Symboliska namn används endast i Bicep-mallen och visas inte i Azure. Resursnamn visas i Azure.
Sedan anger du annan information om resursen, till exempel dess plats, SKU (prisnivå) och typ. Det finns också egenskaper som du kan definiera som är olika för varje resurstyp. Olika API-versioner kan också introducera olika egenskaper. I det här exemplet ställer vi in lagringskontots åtkomstnivå på
Hot
.
Dricks
Resursnamn har ofta regler som du måste följa, till exempel maximala längder, tillåtna tecken och unikhet i hela Azure. Kraven för resursnamn skiljer sig åt för varje Azure-resurstyp. Se till att förstå namngivningsbegränsningarna och kraven innan du lägger till dem i mallen.
Vad händer när resurser är beroende av varandra?
En Bicep-mall innehåller vanligtvis flera resurser. Ofta behöver du en resurs för att vara beroende av en annan resurs. Du kan behöva extrahera viss information från en resurs för att kunna definiera en annan. Om du distribuerar ett webbprogram måste du skapa serverinfrastrukturen innan du kan lägga till ett program i den. Dessa relationer kallas beroenden.
Du måste distribuera en App Service-app för mallen som hjälper dig att starta leksaksprodukten, men för att skapa en App Service-app måste du först skapa en App Service-plan. App Service-planen representerar servervärdresurserna och deklareras som det här exemplet:
resource appServicePlan 'Microsoft.Web/serverFarms@2023-12-01' = {
name: 'toy-product-launch-plan'
location: 'westus3'
sku: {
name: 'F1'
}
}
Den här resursdefinitionen talar om för Bicep att du vill distribuera en App Service-plan som har resurstypen Microsoft.Web/serverFarms
. Planresursen heter toy-product-launch-plan
och distribueras till regionen USA, västra 3. Den använder en pris-SKU för F1, som är App Service kostnadsfria nivå.
Nu när du har deklarerat App Service-planen är nästa steg att deklarera appen:
resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = {
name: 'toy-product-launch-1'
location: 'westus3'
properties: {
serverFarmId: appServicePlan.id
httpsOnly: true
}
}
Den här mallen instruerar Azure att vara värd för appen på den plan som du skapade. Observera att planens definition innehåller App Service-planens symboliska namn på den här raden: serverFarmId: appServicePlan.id
. Den här raden innebär att Bicep hämtar App Service-planens resurs-ID med hjälp av id
egenskapen . Det är effektivt att säga: den här appens servergrupps-ID är ID:t för App Service-planen som definierades tidigare.
Dricks
I Azure är ett resurs-ID en unik identifierare för varje resurs. Resurs-ID:t innehåller Azure-prenumerations-ID, resursgruppens namn och resursnamnet, tillsammans med annan information.
Genom att deklarera appresursen med en egenskap som refererar till planens symboliska namn förstår Azure det implicita beroendet mellan App Service-appen och planen. När den distribuerar resurserna ser Azure till att den distribuerar planen helt innan den börjar distribuera appen.