Skrivning af ARM-skabeloner
Opret en parametriseret ARM-skabelon i JSON til udrulning af en storage-konto og en VM, og brug skabelonfunktioner og variabler til at gøre skabeloner genanvendelige.
Skrivning af ARM-skabeloner er en gratis Cloud & IT Cert Prep-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Cloud & IT Cert Prep, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Cloud & IT Cert Prep-kurset indeholder 4 lektioner i alt.
Hvorfor bruge ARM-skabeloner?
ARM-skabeloner lader dig definere Azure-infrastruktur som kode i JSON-format. Det giver gentagelige og ensartede implementeringer, som kan versionsstyres sammen med din applikationskode. Skabeloner er idempotente — hvis du kører den samme skabelon flere gange, får du det samme resultat, så det er sikkert at anvende dem igen efter ændringer.
Skabelonens grundstruktur og skema
Alle ARM-skabeloner begynder med en egenskab ved navn $schema, der peger på URL'en til skabelonens skema, efterfulgt af en streng med contentVersion. Skemaet fortæller Azure-portalen og editorudvidelser, hvordan skabelonen skal valideres, og giver IntelliSense-understøttelse. De fem hovedsektioner, der 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': {}
}Definition af parametre
Parametre gør skabeloner genanvendelige ved at acceptere input på implementeringstidspunktet. Hver parameter har en type (string, int, bool, object, array, secureString), en valgfri defaultValue og valgfri allowedValues til validering. Hvis du bruger secureString til adgangskoder, sikrer du, at værdien aldrig logges i implementeringshistorikken.
"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"]
}
}Brug af variabler til beregnede værdier
Variabler gemmer værdier, der beregnes ud fra parametre eller skabelonfunktioner. Det reducerer gentagelser og gør skabeloner nemmere at vedligeholde. Variabler evalueres én gang og refereres til i hele ressourceafsnittet ved hjælp af udtrykket [variables('name')]. Et almindeligt mønster er at opbygge et ressourcenavn ved at sammenkæde en parameter med et entydigt suffiks.
"variables": {
"uniqueStorageName": "[concat(parameters('storageAccountName'), uniqueString(resourceGroup().id))]",
"location": "[resourceGroup().location]"
}Definition af ressourcer
Arrayet resources er kernen i en ARM-skabelon. Hvert element beskriver én Azure-ressource med de obligatoriske felter: type, apiVersion, name og location. apiVersion fastlåser skemaet for ressourceudbyderen til en bestemt version — brug altid en nyere stabil version for at få adgang til de nyeste funktioner og undgå udfasede egenskaber.
"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"
}
}
]Skabelonfunktioner og udtryk
Udtryk i ARM-skabeloner er omsluttet af kantede parenteser [...] og understøtter indbyggede funktioner til strenge, arrays, objekter og ressource-id'er. Almindelige funktioner omfatter concat(), resourceGroup(), resourceId(), uniqueString() og parameters(). ARM evaluerer disse funktioner på serversiden på implementeringstidspunktet, 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)]"Output: returnering af værdier
Sektionen outputs definerer de værdier, ARM returnerer efter en vellykket implementering. Output er afgørende for at kæde skabeloner sammen — du implementerer en netværksskabelon og sender ressource-id'et for undernettet som output, hvorefter du videregiver det som en parameter til en VM-skabelon. Output kan referere til alle udtryk, herunder ressourceegenskaber fra implementeringen.
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[variables('uniqueStorageName')]"
},
"blobEndpoint": {
"type": "string",
"value": "[reference(variables('uniqueStorageName')).primaryEndpoints.blob]"
}
}Sammenkædede og indlejrede skabeloner
Til komplekse arkitekturer understøtter ARM sammenkædede skabeloner (der refererer til eksterne URL'er til skabeloner) og indlejrede skabeloner (der integrerer en skabelon i ressourcernes array ved hjælp af typen Microsoft.Resources/deployments). Det lader dig opdele en stor infrastrukturimplementering i modulære, genanvendelige dele, samtidig med at én orkestreringsskabelon fungerer som indgangspunkt.
{
"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 at angive parametre på kommandolinjen kan du gemme dem i en separat parameterfil — en JSON-fil med et parameters-objekt, der indeholder navn-værdi-par. Parameterfiler kan være miljøspecifikke (f.eks. dev.parameters.json og prod.parameters.json) og gemmes i kildekontrol, mens følsomme værdier opbevares som referencer til Azure Key Vault i stedet for som almindelig 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.jsonImplementering og validering af skabeloner
Brug Azure CLI-kommandoen az deployment group create til at implementere en skabelon i en ressourcegruppe. Før du implementerer i produktion, skal du køre az deployment group validate for at finde skema- og logikfejl og az deployment group what-if for at få vist ændringer i ressourcerne på forhånd. Disse tre kommandoer udgør et sikkert implementeringsflow: valider, forhåndsvis, implementer.
# 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.jsonBedste praksis for ARM-skabeloner
Følg denne bedste praksis for ARM-skabeloner: brug parametre til miljøspecifikke værdier, brug variabler for at undgå gentagelser, fastlås API-versioner til stabile versioner, brug secureString til adgangskoder, tilføj metadatabeskrivelser til parametre, og opdel store skabeloner i sammenkædede moduler. Gem skabeloner i et Git-lager, og implementer dem gennem et CI/CD-flow, så de kan revideres.
Hurtigt tjek
Test din forståelse af begreberne fra Microsoft Azure Fundamentals (AZ-900) i denne lektion.
Opsummering af lektionen
I denne lektion har du lært, at ARM-skabeloner er JSON-dokumenter, der deklarativt definerer Azure-infrastruktur, at parametre og variabler gør skabeloner genanvendelige og nemme at vedligeholde, og at arbejdsgangen valider, what-if, implementer muliggør sikre, gentagelige implementeringer. Nu skal vi se på Bicep, en moderne abstraktion oven på ARM JSON.
Lær Cloud & IT Cert Prep med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 150
- Lektioner
- 600
Ofte stillede spørgsmål
Er lektionen “Skrivning af ARM-skabeloner” gratis?
Ja — hele teksten til “Skrivning af ARM-skabeloner” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Cloud & IT Cert Prep-kurset, skal du opgradere til CoddyKit PRO. Cloud & IT Cert Prep-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Skrivning af ARM-skabeloner”?
Opret en parametriseret ARM-skabelon i JSON til udrulning af en storage-konto og en VM, og brug skabelonfunktioner og variabler til at gøre skabeloner genanvendelige. Du øver dig i Cloud & IT Cert Prep med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Cloud & IT Cert Prep?
Der kræves ingen tidligere erfaring. Cloud & IT Cert Prep på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Skrivning af ARM-skabeloner”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Cloud & IT Cert Prep-lektion?
Ja. Alle Cloud & IT Cert Prep-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Sådan fungerer Azure Resource Manager
- Skrivning af ARM-skabeloner
- Bicep: moderne Azure-IaC
- Terraform i Azure