Vad är ARM-mallar?
I och med flytten till molnet har många team infört flexibla utvecklingsmetoder. Dessa team itererar snabbt. De behöver distribuera sina lösningar till molnet upprepade gånger och veta att deras infrastruktur är stabil. När infrastrukturen har blivit en del av den iterativa processen har uppdelningen mellan drift och utveckling försvunnit. Teams behöver hantera infrastruktur- och programkod via en enhetlig process.
För att klara de här utmaningarna kan du automatisera distributioner och använda infrastruktur som kod. I kod definierar du den infrastruktur som ska distribueras. Infrastrukturkoden blir en del av projektet. Precis som programkod lagrar du infrastrukturkoden i en källdatabas och version. Vilken som helst i ditt team kan köra koden och distribuera liknande miljöer.
Om du vill implementera infrastruktur som kod för dina Azure-lösningar använder Azure Resource Manager (ARM-mallar). Mallen är en JavaScript Object Notation (JSON)-fil som definierar infrastrukturen och konfigurationen för ditt projekt. Mallen använder deklarativ syntax, som låter dig ange vad du vill distribuera utan att du behöver skriva sekvensen med programmeringskommandon för att skapa det. I mallen anger du de resurser som ska distribueras och egenskaperna för dessa resurser.
Vi har introducerat ett nytt språk med namnet Bicep som används för att utveckla ARM-mall-JSON. Bicep-filer och JSON-mallar har samma funktioner. Du kan konvertera mallar mellan de två språken. Bicep tillhandahåller en syntax som är enklare att använda för att skapa mallar. Mer information finns i Vad är Bicep?.
Mer information om hur du kommer igång med ARM-mallar finns i följande video.
Varför ska jag välja ARM-mallar?
Om du försöker välja mellan att använda ARM-mallar och en annan infrastruktur som kodtjänster bör du överväga följande fördelar med att använda mallar:
Deklarativ syntax: MED ARM-mallar kan du skapa och distribuera en hel Azure-infrastruktur deklarativt. Du kan till exempel distribuera inte bara virtuella datorer, utan även nätverksinfrastrukturen, lagringssystem och andra resurser som du kan behöva.
Upprepningsbara resultat: Distribuera infrastrukturen upprepade gånger under utvecklingslivscykeln och lita på att dina resurser distribueras på ett konsekvent sätt. Mallar är idempotenta, vilket innebär att du kan distribuera samma mall många gånger och få samma resurstyper i samma tillstånd. Du kan utveckla en mall som representerar det önskade tillståndet i stället för att utveckla många separata mallar som representerar uppdateringar.
Orkestrering: Du behöver inte bekymra dig om komplexiteten i att ordna åtgärder. Resource Manager samordnar distributionen av resurser som är beroende av varandra så att de skapas i rätt ordning. När det är Resource Manager distribuerar resurser parallellt så att distributionerna slutförs snabbare än seriedistributioner. Du distribuerar mallen via ett kommando i stället för via flera imperativ kommandon.

Modulära filer: Du kan dela upp dina mallar i mindre, återanvändbara komponenter och koppla ihop dem vid distributionen. Du kan också kapsla en mall i en annan mall.
Skapa en Azure-resurs: Du kan omedelbart använda nya Azure-tjänster och -funktioner i mallar. Så snart en resursprovider introducerar nya resurser kan du distribuera dessa resurser via mallar. Du behöver inte vänta på att verktyg eller moduler ska uppdateras innan du använder de nya tjänsterna.
Utökningsbarhet: Med distributionsskriptkan du lägga till PowerShell- eller Bash-skript i dina mallar. Distributionsskripten utökar din möjlighet att konfigurera resurser under distributionen. Ett skript kan ingå i mallen eller lagras i en extern källa och refereras till i mallen. Distributionsskript ger dig möjlighet att slutföra konfigurationen av din heltäckande miljö i en enda ARM-mall.
Testa: Du kan se till att mallen följer rekommenderade riktlinjer genom att testa den med ARM-mallverktygssatsen (arm-ttk). Det här testpaketet är ett PowerShell-skript som du kan ladda ned från GitHub. Verktygssatsen gör det enklare för dig att utveckla expertis med hjälp av mallspråket.
Förhandsgranska ändringar: Du kan använda vad om-åtgärden för att få en förhandsgranskning av ändringar innan du distribuerar mallen. Med vad om kan du se vilka resurser som ska skapas, uppdateras eller tas bort och eventuella resursegenskaper som kommer att ändras. Vad om-åtgärden kontrollerar det aktuella tillståndet för din miljö och eliminerar behovet av att hantera tillstånd.
Inbyggd validering: Mallen distribueras först efter att verifieringen har passerat. Resource Manager kontrollerar mallen innan distributionen startas för att säkerställa att distributionen lyckas. Det är mindre troligt att distributionen stoppas i halvklart tillstånd.
Spårade distributioner: I Azure Portal kan du granska distributionshistoriken och få information om malldistributionen. Du kan se mallen som har distribuerats, de parametervärden som skickades och eventuella utdatavärden. Annan infrastruktur som kodtjänster spåras inte via portalen.

Princip som kod: Azure Policy är en princip som kodramverk för att automatisera styrning. Om du använder Azure-principer utförs principreparation på icke-kompatibla resurser när de distribueras via mallar.
Distributionsskisser: Du kan dra nytta av skisser som tillhandahålls av Microsoft för att uppfylla regel- och efterlevnadsstandarder. Dessa skisser innehåller färdiga mallar för olika arkitekturer.
CI/CD-integrering: Du kan integrera mallar i dina CI/CD-verktyg (kontinuerlig integrering och kontinuerlig distribution), som kan automatisera dina lanseringspipelines för snabba och tillförlitliga program- och infrastrukturuppdateringar. Genom att använda Azure DevOps och Resource Manager kan du använda Azure Pipelines för att kontinuerligt skapa och distribuera ARM-mallprojekt. Mer information finns i VS-projekt med pipelines och Självstudie: Kontinuerlig integrering av Azure Resource Manager med Azure Pipelines.
Exporterbar kod: Du kan hämta en mall för en befintlig resursgrupp genom att antingen exportera resursgruppens aktuella tillstånd eller visa mallen som används för en viss distribution. Att granska den exporterade mallen är ett bra sätt att lära sig mer om mallsyntaxen.
Redigeringsverktyg: Du kan skapa mallar med Visual Studio Kod och mallverktygets tillägg. Du får IntelliSense, syntaxmarkering, in-line help och många andra språkfunktioner. Förutom att Visual Studio Code kan du även använda Visual Studio.
Mallfil
I mallen kan du skriva malluttryck som utökar funktionerna i JSON. De här uttrycken använder de funktioner som tillhandahålls av Resource Manager.
Mallen har följande avsnitt:
Parametrar – Ange värden under distributionen som gör att samma mall kan användas med olika miljöer.
Variabler – Definiera värden som återanvänds i dina mallar. De kan konstrueras från parametervärden.
Användardefinierade funktioner – Skapa anpassade funktioner som förenklar mallen.
Resurser – Ange vilka resurser som ska distribueras.
Utdata – Returnerar värden från de distribuerade resurserna.
Malldistribution process
När du distribuerar en Resource Manager konverterar mallen till REST API åtgärder. Till exempel när Resource Manager tar emot en mall med följande resursdefinition:
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2019-04-01",
"name": "mystorageaccount",
"location": "westus",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {}
}
]
Den konverterar definitionen till följande REST API-åtgärd, som skickas till resursprovidern Microsoft.Storage:
PUT
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/mystorageaccount?api-version=2019-04-01
REQUEST BODY
{
"location": "westus",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {}
}
Observera att apiVersion som du anger i mallen för resursen används som API-version för REST-åtgärden. Du kan distribuera mallen upprepade gånger och vara förtroende för att den fortsätter att fungera. Genom att använda samma API-version behöver du inte bekymra dig om större ändringar som kan introduceras i senare versioner.
Om du vill distribuera en mall använder du något av följande alternativ:
Malldesign
Det är helt upp till dig hur du definierar mallar och resursgrupper och hur du vill hantera din lösning. Du kan till exempel distribuera programmet i tre nivåer via en enda mall till en enda resursgrupp.

Du behöver dock inte definiera hela infrastrukturen i en enda mall. Ofta är det praktiskt att dela in dina distributionskrav i en uppsättning riktade mallar för specifika ändamål. Du kan enkelt återanvända dessa mallar för olika lösningar. Om du vill distribuera en viss lösning skapar du en huvudmall som länkar alla nödvändiga mallar. Följande bild visar hur du distribuerar en lösning i tre nivåer via en överordnad mall som innehåller tre kapslade mallar.

Om du tänker dig att dina nivåer har separata livscykler kan du distribuera dina tre nivåer till separata resursgrupper. Observera att resurserna fortfarande kan länkas till resurser i andra resursgrupper.

Mer information om kapslade mallar finns i Använda länkade mallar med Azure Resource Manager.
Dela mallar
När du har skapat mallen kanske du vill dela den med andra användare i din organisation. Med mallspecifikt kan du lagra en mall som en resurstyp. Du använder rollbaserad åtkomstkontroll för att hantera åtkomsten till mallspecifikationen. Användare med läsbehörighet till mallspecifikationen kan distribuera den, men inte ändra mallen.
Den här metoden innebär att du på ett säkert sätt kan dela mallar som uppfyller organisationens standarder.
Nästa steg
- En stegvis självstudiekurs som vägleder dig genom processen för att skapa en mall finns i Självstudie: Skapa och distribuera din första ARM-mall.
- Mer information om ARM-mallar via en guidad uppsättning moduler på Microsoft Learn finns i Distribuera och hantera resurser i Azure med hjälp av ARM-mallar.
- Information om egenskaperna i mallfiler finns i Förstå strukturen och syntaxen för ARM-mallar.
- Mer information om hur du exporterar mallar finns i Snabbstart: Skapa och distribuera ARM-mallar med hjälp av Azure Portal.
- Svar på vanliga frågor finns i Vanliga frågor och svar om ARM-mallar.