Vad är ARM-mallar?
I och med övergången till molnet antog många team 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 blev en del av den iterativa processen försvann uppdelningen mellan drift och utveckling. Teams måste hantera infrastruktur och programkod genom en enhetlig process.
För att möta dessa utmaningar automatiserar du distributioner och använder infrastrukturen som kod. I kod definierar du den infrastruktur som måste distribueras. Infrastrukturkoden är en del av projektet. Precis som programkod lagrar du infrastrukturkoden på en källlagringsplats och version. Vem 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 du Azure Resource Manager-mallar (ARM-mallar). Mallen är en JSON-fil (JavaScript Object Notation) 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. Du kan också ange i vilken resursgrupp resurserna ska distribueras.
Dricks
Vi introducerade ett nytt språk med namnet Bicep som erbjuder samma funktioner som ARM-mallar, men med en syntax som är enklare att använda. Varje Bicep-fil konverteras automatiskt till en ARM-mall under distributionen. Om du överväger infrastruktur som kodalternativ rekommenderar vi att du tittar på Bicep. Mer information finns i Vad är Bicep?.
Varför ska du välja ARM-mallar?
Om du försöker välja mellan att använda ARM-mallar och en av de andra infrastrukturerna 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ätverksinfrastruktur, lagringssystem och andra resurser som du behöver.
Repeterbara resultat: Distribuera infrastrukturen upprepade gånger under utvecklingslivscykeln och ha förtroende för att dina resurser distribueras på ett konsekvent sätt. Mallar är idempotenter, 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 önskat tillstånd i stället för att utveckla många separata mallar som representerar uppdateringar. Följande fil skapar till exempel ett lagringskonto. Om du distribuerar den här mallen och lagringskontot med de angivna egenskaperna redan finns, görs inga ändringar.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": {
"mystore": {
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-04-01",
"name": "mystorageaccount",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2"
}
}
}
Orkestrering: Du behöver inte bekymra dig om komplexiteten i beställningsåtgärder. Resource Manager samordnar distributionen av beroende resurser så att de skapas i rätt ordning. När det är möjligt distribuerar Resource Manager resurser parallellt, så dina distributioner slutförs snabbare än seriedistributioner. Du distribuerar mallen via ett kommando i stället för genom flera imperativa kommandon.
Modulära filer: Du kan dela upp dina mallar i mindre, återanvändbara komponenter och länka ihop dem vid distributionstillfället. Du kan också kapsla en mall i en annan mall.
Skapa valfri 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 distributionsskript kan du lägga till PowerShell- eller Bash-skript i dina mallar. Distributionsskripten utökar din möjlighet att konfigurera resurser under distributionen. Du kan inkludera ett skript i mallen eller lagra det i en extern källa och referera till det i mallen. Med distributionsskript kan du slutföra konfigurationen av din slutpunkt till slutpunkt-miljö i en enda ARM-mall.
Testning: Testa mallen med ARM-mallverktyget (arm-ttk) för att se till att mallen följer de rekommenderade riktlinjerna. Det här testpaketet är ett PowerShell-skript som du kan ladda ned från GitHub. Verktygspaketet gör det enklare för dig att utveckla expertis med hjälp av mallspråket.
Förhandsgranska ändringar: Använd konsekvensåtgärden för att förhandsgranska ändringar innan du distribuerar mallen. Med what-if ser du vilka resurser som ska skapas, uppdateras eller tas bort och eventuella resursegenskaper som ska ändras. Konsekvensåtgärden kontrollerar miljöns aktuella tillstånd och eliminerar behovet av att hantera tillstånd.
Inbyggd validering: Mallen distribueras endast efter verifieringen. Resource Manager kontrollerar mallen innan du startar distributionen för att se till att den lyckas. Distributionen är mindre sannolikt att stoppas i ett halvfärdigt tillstånd.
Spårade distributioner: I Azure Portal kan du granska distributionshistoriken och få information om malldistributionen. Du kan se mallen som distribuerades, parametervärdena 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 styrningen. Om du använder Azure-principer utförs principreparation på icke-kompatibla resurser när de distribueras via mallar.
Distributionsritningar: Du kan dra nytta av skisser som tillhandahålls av Microsoft för att uppfylla regel- och efterlevnadsstandarder. Dessa skisser innehåller fördefinierade mallar för olika arkitekturer.
CI/CD-integrering: Du kan integrera mallar i dina CI/CD-verktyg (kontinuerlig integrering och kontinuerlig distribution). Den här integreringen automatiserar dina versionspipelines för snabba och tillförlitliga program- och infrastrukturuppdateringar. Med hjälp av Azure DevOps- och Resource Manager-malluppgiften 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älvstudier: Kontinuerlig integrering av Azure Resource Manager-mallar 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 Code och mallverktygstillägget. Du får IntelliSense, syntaxmarkering, infogad hjälp och många andra språkfunktioner. Förutom Visual Studio Code kan du även använda Visual Studio.
Mallfil
I mallen kan du skriva malluttryck som utökar funktionerna i JSON. Dessa uttryck använder de funktioner som Resource Manager tillhandahåller.
Mallen innehåller följande avsnitt:
Parametrar – Ange värden under distributionen som du anpassar för olika miljöer när du använder samma mall.
Variabler – Definiera värden som du återanvänder i dina mallar. Du kan konstruera dem från parametervärden.
Användardefinierade funktioner – Skapa anpassade funktioner som förenklar mallen.
Resurser – Ange vilka resurser som ska distribueras.
Utdata – Returnera värden från de distribuerade resurserna.
Distributionsprocess för mallar
När du distribuerar en mall konverterar Resource Manager 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": "2022-09-01",
"name": "mystorageaccount",
"location": "centralus",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2"
},
]
Den konverterar definitionen till följande REST API-åtgärd, som den skickar till Microsoft.Storage-resursprovidern:
PUT
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/mystorageaccount?api-version=2022-09-01
REQUEST BODY
{
"location": "centralus",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {}
}
Observera att den apiVersion som du angav i mallen för resursen används som API-version för REST-åtgärden. Du kan distribuera mallen upprepade gånger och ha förtroende för att den fortsätter att fungera. Genom att använda samma API-version behöver du inte bekymra dig om icke-bakåtkompatibla ändringar som kan komma att introduceras i senare versioner.
Om du vill distribuera en mall använder du något av följande alternativ:
Malldesign
Definiera mallar och resursgrupper baserat på hur du vill hantera din lösning. Du kan till exempel distribuera ditt program med tre nivåer via en enda mall till en enda resursgrupp.
Du behöver 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 med 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. Resurserna kan fortfarande 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 mallspecifikationer kan du lagra en mall som resurstyp. Använd rollbaserad åtkomstkontroll för att hantera åtkomst 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.
Få support
Här följer stegen för att öppna ett supportärende för azure resource manager-mallrelaterade problem:
Öppna Azure Portal.
Välj ikonen Support + Felsökning i det övre högra hörnet.
I Beskriv problemet kortfattat anger du ARM-mall och väljer sedan Gå.
I Vilken tjänst har du problem med? väljer du Portal under Övervakning och hantering och väljer sedan Nästa.
Välj en prenumeration och välj sedan Nästa.
Välj Problem med ARM-mallar och välj sedan Nästa.
Nästa steg
- En stegvis självstudiekurs som vägleder dig genom processen 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 Learn-moduler 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.