Azure Resource Manager-sjabloonstructuur verkennen
In deze les leert u hoe u Azure Resource Manager-sjablonen (ARM-sjablonen) kunt gebruiken om infrastructuur als code te implementeren. U gaat de secties van een ARM-sjabloon onderzoeken, leren hoe u uw ARM-sjabloon kunt implementeren in Azure, en u gaat de sectie resources van de ARM-sjabloon in detail bekijken.
Wat is infrastructuur als code?
Met infrastructuur als code kunt u de infrastructuur beschrijven die u nodig hebt voor uw toepassing.
Met infrastructuur als code kunt u de code van uw toepassing en alles wat u nodig hebt om uw toepassing te implementeren, in een centrale opslagplaats voor code onderhouden. De voordelen van infrastructuur als code zijn:
- Consistente configuraties
- Verbeterde schaalbaarheid
- Snellere implementaties
- Betere traceerbaarheid
In deze video wordt de infrastructuur uitgelegd als code:
Wat is een ARM-sjabloon?
ARM-sjablonen zijn JSON-bestanden (JavaScript Object Notation) waarmee de infrastructuur en configuratie voor uw implementatie worden gedefinieerd. De sjabloon maakt gebruik van een declaratieve syntaxis. De declaratieve syntaxis is een manier om de structuur en elementen te bouwen die aangeven hoe resources eruitzien zonder de controlestroom te beschrijven. Declaratieve syntaxis is anders dan imperatieve syntaxis, omdat deze opdrachten gebruikt die door de computer moeten worden uitgevoerd. Bij het gebruik van imperatieve scripts ligt de focus op het beschrijven van elke stap die moet worden genomen om de resources te implementeren.
Met ARM-sjablonen kunt u declareren wat u wilt implementeren zonder dat u de reeks programmeeropdrachten hoeft te schrijven die nodig zijn om dit te maken. In een ARM-sjabloon geeft u de resources en de eigenschappen voor die resources op. Azure Resource Manager gebruikt die informatie vervolgens om de resources op een georganiseerde en consistente manier te implementeren.
De voordelen van het gebruik van ARM-sjablonen
Met ARM-sjablonen kunt u implementaties automatiseren en de methode Infrastructuur als code (IaC) gebruiken. De sjablooncode wordt onderdeel van uw infrastructuur en ontwikkelingsprojecten. Net als bij toepassingscode kunt u de IaC-bestanden opslaan in een broncodeopslagplaats en er versiebeheer voor gebruiken.
ARM-sjablonen zijn idempotent. Dit betekent dat u dezelfde sjabloon meerdere keren kunt implementeren en dezelfde resourcetypen in dezelfde status krijgt.
Resource Manager organiseert het implementeren van de resources, zodat ze in de juiste volgorde worden gemaakt. Indien mogelijk worden resources parallel gemaakt, zodat ARM-sjabloonimplementaties sneller worden voltooid dan gescripte implementaties.
Resource Manager heeft ook ingebouwde validatie. De sjabloon wordt gecontroleerd voordat de implementatie wordt gestart om ervoor te zorgen dat de implementatie slaagt.
Als uw implementaties ingewikkelder worden, kunt u uw ARM-sjablonen in kleinere, herbruikbare onderdelen opdelen. U kunt deze kleinere sjablonen tijdens de implementatie aan elkaar koppelen. U kunt ook sjablonen in andere sjablonen nesten.
In de Azure-portal kunt u de implementatiegeschiedenis bekijken en gegevens over de status van de implementatie ophalen. In de portal worden waarden voor alle parameters en uitvoer weergegeven.
U kunt uw ARM-sjablonen ook integreren in hulpprogramma's voor continue integratie en continue implementatie (CI/CD), zoals Azure Pipelines, waarmee u uw releasepijplijnen kunt automatiseren voor snelle en betrouwbare updates van toepassingen en infrastructuur. Met behulp van Azure DevOps-taken en ARM-sjabloontaken kunt u uw projecten continu bouwen en implementeren.
ARM-sjabloonbestandsstructuur
Wanneer u een ARM-sjabloon schrijft, moet u alle onderdelen begrijpen waaruit de sjabloon bestaat en wat ze doen. ARM-sjabloonbestanden bestaan uit de volgende elementen:
Element | Beschrijving |
---|---|
schema | Een vereiste sectie die de locatie van het JSON-schemabestand definieert waarin de structuur van JSON-gegevens wordt beschreven. Het versienummer dat u gebruikt, is afhankelijk van het bereik van de implementatie en uw JSON-editor. |
contentVersion | Een vereiste sectie waarmee de versie van uw sjabloon (zoals 1.0.0.0) wordt gedefinieerd. U kunt deze waarde gebruiken om belangrijke wijzigingen in uw sjabloon vast te leggen, zodat u zeker weet dat u de juiste sjabloon implementeert. |
apiProfile | Een optionele sectie die een verzameling API-versies voor resourcetypen definieert. U kunt deze waarde gebruiken om te voorkomen dat u API-versies moet opgeven voor elke resource in de sjabloon. |
parameters | Een optionele sectie waarin u waarden definieert die tijdens de implementatie worden opgegeven. U kunt deze waarden opgeven in een parameterbestand, op opdrachtregelparameters of in Azure Portal. |
Variabelen | Een optionele sectie waarin u waarden definieert die worden gebruikt voor het vereenvoudigen van sjabloontaalexpressies. |
Functies | Een optionele sectie waarin u door de gebruiker gedefinieerde functies kunt definiëren die beschikbaar zijn in de sjabloon. Door de gebruiker gedefinieerde functies kunnen uw sjabloon vereenvoudigen wanneer in uw sjabloon herhaaldelijk gecompliceerde expressies worden gebruikt. |
weg | Een vereiste sectie waarmee de werkelijke items worden gedefinieerd die u wilt implementeren of bijwerken in een resourcegroep of een abonnement. |
uitvoer | Een optionele sectie waarin u de waarden opgeeft die aan het einde van de implementatie worden geretourneerd. |
Een ARM-sjabloon in Azure implementeren
U kunt op een van de volgende manieren een ARM-sjabloon implementeren in Azure:
- Een lokale sjabloon implementeren
- Een gekoppelde sjabloon implementeren
- Implementeren in een pijplijn voor continue implementatie
Deze module richt zich op het implementeren van een lokale ARM-sjabloon. In toekomstige Learn-modules leert u hoe u complexere infrastructuur implementeert en hoe u integreert met Azure Pipelines.
Voor het implementeren van een lokale sjabloon moet u Azure PowerShell of de Azure CLI lokaal hebben geïnstalleerd.
Meld u eerst aan bij Azure met behulp van de Azure CLI of Azure PowerShell.
az login
Definieer vervolgens uw resourcegroep. U kunt een al gedefinieerde resourcegroep gebruiken of een nieuwe groep maken met de volgende opdracht. U kunt beschikbare locatiewaarden verkrijgen van: az account list-locations
(CLI) of Get-AzLocation
(PowerShell). U kunt de standaardlocatie configureren met behulp van az configure --defaults location=<location>
.
az group create \
--name {name of your resource group} \
--location "{location}"
Als u een sjabloonimplementatie in de resourcegroep wilt starten, gebruikt u de Azure CLI-opdracht az deployment group create of de Azure PowerShell-opdracht New-AzResourceGroupDeployment.
Tip
Het verschil tussen az deployment group create
en az group deployment create
is dat az group deployment create
is een oude opdracht die moet worden afgeschaft en wordt vervangen door az deployment group create
. Daarom raden we u aan az deployment group create
om resources te implementeren onder het bereik van de resourcegroep.
Voor beide opdrachten is de resourcegroep, de regio en de naam voor de implementatie vereist, zodat u deze eenvoudig kunt herkennen in de implementatiegeschiedenis. Voor het gemak maken de oefeningen een variabele waarmee het pad naar het sjabloonbestand wordt opgeslagen. Met deze variabele kunt u eenvoudiger implementatieopdrachten uitvoeren, omdat u het pad niet telkens opnieuw hoeft te typen wanneer u implementeert. Hier volgt een voorbeeld:
Als u deze implementatieopdracht wilt uitvoeren, moet u beschikken over de nieuwste versie van Azure CLI.
templateFile="{provide-the-path-to-the-template-file}"
az deployment group create \
--name blanktemplate \
--resource-group myResourceGroup \
--template-file $templateFile
Gebruik gekoppelde sjablonen voor het implementeren van complexe oplossingen. U kunt een sjabloon opsplitsen in vele sjablonen en deze sjablonen implementeren via een hoofdsjabloon. Wanneer u de hoofdsjabloon implementeert, wordt de implementatie van de gekoppelde sjabloon geactiveerd. U kunt de gekoppelde sjabloon opslaan en beveiligen met behulp van een SAS-token.
Een CI/CD-pijplijn automatiseert het maken en implementeren van ontwikkelprojecten, waaronder ARM-sjabloonprojecten. De twee pijplijnen die het meest worden gebruikt voor het implementeren van sjablonen zijn Azure Pipelines en GitHub Actions.
Meer informatie over deze twee typen implementaties vindt u in andere modules.
Resources aan de sjabloon toevoegen
Als u een resource aan uw sjabloon wilt toevoegen, moet u de resourceprovider en de bijbehorende typen resources kennen. De syntaxis voor deze combinatie heeft de vorm {resource-provider}/{resource-type}. Als u bijvoorbeeld een opslagaccountresource wilt toevoegen aan uw sjabloon, hebt u de Microsoft.Storage
resourceprovider nodig. Een van de typen voor deze provider is storageAccount
. Uw resourcetype wordt dus weergegeven als Microsoft.Storage/storageAccounts
. U kunt een lijst met resourceproviders voor Azure-services gebruiken om de providers te vinden die u nodig hebt.
Nadat u de provider en het resourcetype hebt gedefinieerd, moet u de eigenschappen voor elk resourcetype begrijpen dat u wilt gebruiken. Zie Resources definiëren in Azure Resource Manager-sjablonen voor meer informatie. Als u de resource wilt zoeken, bekijkt u de lijst in de linkerkolom. U ziet dat de eigenschappen zijn gesorteerd op API-versie.
Hier volgt een voorbeeld van een aantal van de vermelde eigenschappen op de pagina Opslagaccounts:
In ons opslagvoorbeeld kan uw sjabloon er als volgt uitzien:
{
"$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": {}
}