Skrive ARM-maler
Bygg en parameterisert ARM-mal i JSON for å distribuere en lagringskonto og en VM, og bruk malfunksjoner og variabler for å gjøre malene gjenbrukbare.
Skrive ARM-maler er en gratis leksjon i Azure Fundamentals på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Azure Fundamentals, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Azure Fundamentals inneholder totalt 4 leksjoner.
Hvorfor bruke ARM-maler?
ARM-maler lar Dem definere Azure-infrastruktur som kode i JSON-format. Dette muliggjør repeterbare og konsistente distribusjoner som kan versjonskontrolleres sammen med applikasjonskoden. Maler er idempotente — når den samme malen kjøres flere ganger, gir den samme resultat, slik at det er trygt å bruke den på nytt etter endringer.
Malens grunnstruktur og skjema
Alle ARM-maler starter med egenskapen $schema, som peker til URL-en for malskjemaet, etterfulgt av en contentVersion-streng. Skjemaet forteller Azure-portalen og utvidelser for redigeringsprogrammer hvordan malen skal valideres, og gir støtte for IntelliSense. De fem hoveddelene som følger, er parameters, variables, functions, resources og outputs.
{
'$schema': 'https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#',
'contentVersion': '1.0.0.0',
'parameters': {},
'variables': {},
'functions': [],
'resources': [],
'outputs': {}
}Definere parametere
Parametere gjør maler gjenbrukbare ved å ta imot inndata på distribusjonstidspunktet. Hver parameter har en type (string, int, bool, object, array, secureString), en valgfri defaultValue og valgfrie allowedValues for validering. Ved å bruke secureString for passord sikrer De at verdien aldri logges i distribusjonshistorikken.
"parameters": {
"storageAccountName": {
"type": "string",
"minLength": 3,
"maxLength": 24,
"metadata": { "description": "Globally unique storage account name" }
},
"sku": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": ["Standard_LRS", "Standard_GRS", "Premium_LRS"]
}
}Bruke variabler for beregnede verdier
Variabler lagrer verdier som beregnes fra parametere eller malfunksjoner. Dette reduserer gjentakelser og gjør malene enklere å vedlikeholde. Variabler evalueres én gang og refereres til gjennom hele ressursdelen ved hjelp av uttrykket [variables('name')]. Et vanlig mønster er å bygge et ressursnavn ved å sette sammen en parameter med et unikt suffiks.
"variables": {
"uniqueStorageName": "[concat(parameters('storageAccountName'), uniqueString(resourceGroup().id))]",
"location": "[resourceGroup().location]"
}Definere ressurser
resources-matrisen er kjernen i en ARM-mal. Hvert element beskriver én Azure-ressurs med obligatoriske felt: type, apiVersion, name og location. apiVersion fastsetter versjonen av skjemaet for ressursleverandøren — bruk alltid en nyere stabil versjon for å få tilgang til de nyeste funksjonene og unngå utdaterte egenskaper.
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-01-01",
"name": "[variables('uniqueStorageName')]",
"location": "[variables('location')]",
"sku": { "name": "[parameters('sku')]" },
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true,
"minimumTlsVersion": "TLS1_2"
}
}
]Malfunksjoner og uttrykk
Uttrykk i ARM-maler omsluttes av hakeparenteser [...] og støtter innebygde funksjoner for strenger, matriser, objekter og ressurs-ID-er. Vanlige funksjoner omfatter concat(), resourceGroup(), resourceId(), uniqueString() og parameters(). ARM evaluerer disse funksjonene på serversiden ved distribusjonstidspunktet, ikke lokalt.
// Reference a resource ID inside a template
"subnetId": "[resourceId('Microsoft.Network/virtualNetworks/subnets', 'myVNet', 'mySubnet')]"
// Build a unique, deterministic name
"name": "[concat('storage', uniqueString(resourceGroup().id))]"
// Conditionally include a resource
"condition": "[equals(parameters('deployStorage'), true)]"Outputs: returnere verdier
outputs-delen definerer verdier som ARM returnerer etter en vellykket distribusjon. Outputs er avgjørende for å koble sammen maler — De distribuerer en nettverksmal og returnerer ressurs-ID-en til et subnett, som De deretter sender som parameter til en VM-mal. Outputs kan referere til alle uttrykk, inkludert ressursegenskaper fra distribusjonen.
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[variables('uniqueStorageName')]"
},
"blobEndpoint": {
"type": "string",
"value": "[reference(variables('uniqueStorageName')).primaryEndpoints.blob]"
}
}Koblede og nestede maler
For komplekse arkitekturer støtter ARM koblede maler (som refererer til eksterne URL-er for maler) og nestede maler (som bygger inn en mal i ressursmatrisen ved å bruke typen Microsoft.Resources/deployments). Dette lar Dem dele opp en stor infrastrukturd distribusjon i modulære, gjenbrukbare deler, samtidig som én orkestreringsmal beholdes som inngangspunkt.
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "networkDeploy",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/contoso/templates/main/network.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"vnetName": { "value": "[parameters('vnetName')]" }
}
}
}Parameterfiler
I stedet for å sende parametere på kommandolinjen kan De lagre dem i en separat parameterfil — en JSON-fil med et parameters-objekt som inneholder navn-verdi-par. Parameterfiler kan være miljøspesifikke (for eksempel dev.parameters.json og prod.parameters.json) og legges inn i kildekontroll. Sensitive verdier kan da oppbevares som referanser til Azure Key Vault i stedet for som ren tekst.
// dev.parameters.json
{
'$schema': 'https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#',
'contentVersion': '1.0.0.0',
'parameters': {
'storageAccountName': { 'value': 'devstorageacct' },
'sku': { 'value': 'Standard_LRS' }
}
}
// Deploy with parameters file
// az deployment group create -g MyRG -f azuredeploy.json -p dev.parameters.jsonDistribuere og validere maler
Bruk Azure CLI-kommandoen az deployment group create til å distribuere en mal til en ressursgruppe. Før De distribuerer til produksjon, bør De kjøre az deployment group validate for å avdekke feil i skjema og logikk, samt az deployment group what-if for å forhåndsvise ressursendringer. Disse tre kommandoene utgjør en trygg distribusjonsprosess: valider, forhåndsvis, distribuer.
# Step 1: Validate the template syntax
az deployment group validate \
--resource-group MyRG \
--template-file azuredeploy.json \
--parameters @dev.parameters.json
# Step 2: Preview changes
az deployment group what-if \
--resource-group MyRG \
--template-file azuredeploy.json \
--parameters @dev.parameters.json
# Step 3: Deploy
az deployment group create \
--resource-group MyRG \
--template-file azuredeploy.json \
--parameters @dev.parameters.jsonBeste praksis for ARM-maler
Følg denne beste praksisen for ARM-maler: bruk parametere for miljøspesifikke verdier, bruk variabler for å unngå gjentakelser, fastsett API-versjoner til stabile versjoner, bruk secureString for passord, legg til metadatabeskrivelser for parametere, og del opp store maler i koblede moduler. Lagre malene i et Git-repositorium og distribuer dem gjennom en CI/CD-pipeline for å sikre sporbarhet.
Kort kontroll
Test forståelsen Deres av konseptene i Microsoft Azure Fundamentals (AZ-900) fra denne leksjonen.
Oppsummering av leksjonen
I denne leksjonen lærte De at ARM-maler er JSON-dokumenter som deklarativt definerer Azure-infrastruktur, at parametere og variabler gjør maler gjenbrukbare og enklere å vedlikeholde, og at arbeidsflyten valider, what-if, distribuer muliggjør trygge og repeterbare distribusjoner. Neste tema er Bicep, et moderne abstraksjonslag over ARM JSON.
Lær deg Azure Fundamentals med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 30
- Leksjoner
- 120
Ofte stilte spørsmål
Er leksjonen «Skrive ARM-maler» gratis?
Ja – hele teksten i «Skrive ARM-maler» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Azure Fundamentals-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Azure Fundamentals inneholder totalt 4 leksjoner.
Hva lærer jeg i «Skrive ARM-maler»?
Bygg en parameterisert ARM-mal i JSON for å distribuere en lagringskonto og en VM, og bruk malfunksjoner og variabler for å gjøre malene gjenbrukbare. Du øver på Azure Fundamentals med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Azure Fundamentals?
Ingen tidligere erfaring er nødvendig. Azure Fundamentals på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Skrive ARM-maler»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Azure Fundamentals-leksjonen?
Ja. Alle Azure Fundamentals-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.