Utforska Azure Resource Manager-mallens struktur
I den här lektionen får du lära dig att använda Azure Resource Manager-mallar (ARM-mallar) för att implementera infrastruktur som kod. Du undersöker avsnitten i en ARM-mall, lär dig att distribuera din ARM-mall till Azure och går in i detalj i avsnittet resurser i ARM-mallen.
Vad är infrastruktur som kod?
Med infrastruktur som kod kan du med kod beskriva den infrastruktur som du behöver för ditt program.
Med infrastruktur som kod kan du underhålla både din programkod och allt du behöver för att distribuera ditt program till en central kodlagrings plats. Fördelarna med infrastruktur som kod är:
- Konsekventa konfigurationer
- Förbättrad skalbarhet
- Snabbare distributioner
- Bättre spårbarhet
I den här videon förklaras infrastrukturen som kod:
Vad är en ARM-mall?
ARM-mallar är JSON-filer (JavaScript Object Notation) som definierar infrastrukturen och konfigurationen för din distribution. Mallen använder en deklarativ syntax. Deklarativ syntax är ett sätt att skapa strukturen och elementen som beskriver hur resurser ser ut utan att beskriva kontrollflödet. Deklarativ syntax skiljer sig från tvingande syntax, som använder kommandon för datorn som ska utföras. Tvingande skript fokuserar på att ange varje steg i distributionen av resurserna.
Med ARM-mallar kan du deklarera vad du vill distribuera utan att behöva skriva sekvensen med programmeringskommandon för att skapa den. I en ARM-mall anger du resurserna och egenskaperna för dessa resurser. Azure Resource Manager använder sedan den informationen för att distribuera resurserna på ett organiserat och konsekvent sätt.
Fördelar med att använda ARM-mallar
Med ARM-mallar kan du automatisera distributioner och använda infrastrukturen som kod (IaC). Mallkoden blir en del av dina infrastruktur- och utvecklingsprojekt. Precis som programkod kan du lagra IaC-filerna på en källagringsplats och ange version.
ARM-mallar är idempotenta, vilket innebär att du kan distribuera samma mall flera gånger och få samma resurstyper i samma tillstånd.
Resource Manager dirigerar distributionen av resurserna så att de skapas i rätt ordning. När det är möjligt skapas resurser parallellt, så DISTRIBUTIONer av ARM-mallar slutförs snabbare än distributioner med skript.
I Resource Manager finns även inbyggd verifiering. Den kontrollerar mallen innan distributionen startas för att säkerställa att distributionen lyckas.
Om dina distributioner blir mer komplexa kan du dela upp ARM-mallarna i mindre, återanvändbara komponenter. Du kan länka samman de här mindre mallarna vid tidpunkten för distribution. Du kan också kapsla mallar i andra mallar.
I Azure-portalen kan du granska distributionshistoriken och få information om distributionens status. I portalen visas värden för alla parametrar och utdata.
Du kan också integrera dina ARM-mallar i verktyg för kontinuerlig integrering och verktyg för kontinuerlig distribution (CI/CD), t. ex. Azure Pipelines, som kan automatisera dina versionspipelines för snabba och tillförlitliga uppdateringar av program och infrastruktur. Genom att använda Azures DevOps- och ARM-mallaktiviteter kan du kontinuerligt bygga och distribuera dina projekt.
ARM-mallens filstruktur
När du skriver en ARM-mall måste du förstå alla delar som utgör mallen och vad de gör. ARM-mallfiler består av följande element:
Element | Description |
---|---|
Schemat | Ett obligatoriskt avsnitt som definierar platsen för JSON-schemafilen som beskriver strukturen för JSON-data. Vilket versionsnummer du använder beror på distributionens omfattning och JSON-redigeraren. |
contentVersion | Ett obligatoriskt avsnitt som definierar versionen för din mall (till exempel 1.0.0.0). Du kan använda det här värdet för att dokumentera viktiga ändringar i mallen för att se till att du distribuerar rätt mall. |
apiProfile | Ett valfritt avsnitt som definierar en samling API-versioner för resurstyper. Du kan använda det här värdet för att undvika att behöva ange API-versioner för varje resurs i mallen. |
parameters | Ett valfritt avsnitt där du definierar värden som tilllhandahålls under distributionen. Du kan ange dessa värden i en parameterfil, med kommandoradsparametrar eller i Azure Portal. |
Variabler | Ett valfritt avsnitt där du definierar värden som används för att förenkla mallspråkuttrycken. |
Funktioner | Ett valfritt avsnitt där du kan definiera användardefinierade funktioner som är tillgängliga i mallen. Användardefinierade funktioner kan förenkla mallen när komplicerade uttryck används flera gånger i mallen. |
Resurser | Ett obligatoriskt avsnitt som definierar de faktiska objekt som du vill distribuera eller uppdatera i en resursgrupp eller prenumeration. |
utdata | Ett valfritt avsnitt där du anger de värden som returneras i slutet av distributionen. |
Distribuera en ARM-mall till Azure
Du kan distribuera en ARM-mall till Azure på något av följande sätt:
- Distribuera en lokal mall
- Distribuera en länkad mall
- Distribuera i en pipeline för kontinuerlig distribution
Den här modulen fokuserar på att distribuera en lokal ARM-mall. I framtida Learn-moduler lär du dig hur du distribuerar mer komplicerad infrastruktur och hur du integrerar med Azure Pipelines.
Om du distribuerar en lokal mall måste du antingen ha Azure PowerShell eller Azure CLI installerat lokalt.
Först loggar du in på Azure med Azure CLI eller Azure PowerShell.
az login
Definiera sedan resursgruppen. Du kan använda en redan definierad resursgrupp eller skapa en ny med följande kommando. Du kan hämta tillgängliga platsvärden från: az account list-locations
(CLI) eller Get-AzLocation
(PowerShell). Du kan konfigurera standardplatsen med hjälp av az configure --defaults location=<location>
.
az group create \
--name {name of your resource group} \
--location "{location}"
Om du vill starta en malldistribution i resursgruppen använder du antingen Azure CLI-kommandot az deployment group create eller Azure PowerShell-kommandot New-AzResourceGroupDeployment.
Dricks
Skillnaden mellan az deployment group create
och az group deployment create
är att är ett az group deployment create
gammalt kommando som ska vara inaktuellt och ersätts av az deployment group create
. Därför rekommenderar vi att du använder az deployment group create
för att distribuera resurser under resursgruppens omfång.
Båda kommandona kräver resursgruppen, regionen och namnet på distributionen så att du enkelt kan identifiera den i distributionshistoriken. För enkelhetens skull skapar övningarna en variabel som lagrar sökvägen till mallfilen. Den här variabeln gör det enklare för dig att köra distributionskommandon eftersom du inte behöver skriva om sökvägen varje gång du distribuerar. Här är ett exempel:
För att köra det här distributionskommandot måste du ha den senaste versionen av Azure CLI.
templateFile="{provide-the-path-to-the-template-file}"
az deployment group create \
--name blanktemplate \
--resource-group myResourceGroup \
--template-file $templateFile
Använd länkade mallar för att distribuera komplexa lösningar. Du kan dela upp en mall i flera mallar och distribuera dem via en huvudmall. När du distribuerar huvudmallen utlöser den den länkade mallens distribution. Du kan lagra och skydda den länkade mallen med hjälp av en SAS-token.
Med en CI/CD-pipeline automatiseras skapande och distribution av utvecklingsprojekt, till exempel projekt med ARM-mallar. De två vanligaste pipelines som används för att distribuera mallar är Azure Pipelines eller GitHub Actions.
Mer information om de här två typerna av distributioner beskrivs i andra moduler.
Lägga till resurser i mallen
Om du vill lägga till en resurs i mallen måste du känna till resursprovidern och dess typer av resurser. Syntaxen för den här kombinationen är i formatet {resource-provider}/{resource-type}. Om du till exempel vill lägga till en lagringskontoresurs i mallen Microsoft.Storage
behöver du resursprovidern. En av typerna för den här providern är storageAccount
. Resurstypen visas därför som Microsoft.Storage/storageAccounts
. Du kan använda en lista över -resursproviders för Azure-tjänster för att hitta de providers du behöver.
När du har definierat providern och resurstypen måste du förstå egenskaperna för varje resurstyp som du vill använda. Mer information finns i Definiera resurser i Azure Resource Manager-mallar. Om du vill hitta resursen visar du listan i den vänstra kolumnen. Observera att egenskaperna sorteras efter API-version.
Här är ett exempel på några av de listade egenskaperna från lagringskontosidan:
I vårt lagringsexempel kan mallen se ut så här:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.1",
"apiProfile": "",
"parameters": {},
"variables": {},
"functions": [],
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-05-01",
"name": "learntemplatestorage123",
"location": "westus",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
],
"outputs": {}
}