Wat zijn ARM-sjablonen?

Met de overstap naar de cloud hebben veel teams flexibele ontwikkelmethoden gebruikt. Deze teams kunnen snel werken. Ze moeten hun oplossingen herhaaldelijk implementeren in de cloud en weten dat hun infrastructuur een betrouwbare status heeft. Naarmate de infrastructuur onderdeel is geworden van het iteratieve proces, is de scheiding tussen bewerkingen en ontwikkeling verdwenen. Teams moeten de infrastructuur en toepassingscode beheren via een uniform proces.

Om deze uitdagingen aan te pakken, kunt u implementaties automatiseren en de methode Infrastructuur als code (IaC) gebruiken. In code definieert u de infrastructuur die moet worden geïmplementeerd. De infrastructuurcode wordt onderdeel van uw project. Net als bij toepassingscode slaat u de infrastructuurcode op in een bronopslagplaats en versie ervan. Iedereen in uw team kan de code uitvoeren en vergelijkbare omgevingen implementeren.

Als u infrastructuur wilt implementeren als code voor uw Azure-oplossingen, gebruikt u Azure Resource Manager-sjablonen (ARM-sjablonen). De sjabloon is een JavaScript Object Notation-bestand (JSON) dat de infrastructuur en configuratie van uw project definieert. De sjabloon gebruikt een declaratieve syntaxis. Dit is een syntaxis waarmee u kunt aangeven wat u wilt implementeren zonder hiervoor de nodige reeks programmeeropdrachten te hoeven maken. In de sjabloon geeft u de te implementeren resources en de eigenschappen voor deze resources op.

Tip

We hebben een nieuwe taal geïntroduceerd met de naam Bicep die dezelfde mogelijkheden biedt als ARM-sjablonen, maar met een syntaxis die gemakkelijker te gebruiken is. Elk Bicep-bestand wordt tijdens de implementatie automatisch geconverteerd naar een ARM-sjabloon. Als u infrastructuur als codeopties overweegt, raden we u aan bicep te bekijken. Zie Wat is Bicep? voor meer informatie.

Zie de volgende video voor meer informatie over hoe u aan de slag kunt met ARM-sjablonen.

Waarom ARM-sjablonen kiezen?

Als u probeert te kiezen tussen het gebruik van ARM-sjablonen en een van de andere infrastructuur als codeservices, kunt u rekening houden met de volgende voordelen van het gebruik van sjablonen:

  • Declaratieve syntaxis: met ARM-sjablonen kunt u declaratief een volledige Azure-infrastructuur maken en implementeren. U kunt bijvoorbeeld niet alleen virtuele machines implementeren, maar ook de netwerkinfrastructuur, opslagsystemen en andere resources die u mogelijk nodig hebt.

  • Herhaalbare resultaten: implementeer uw infrastructuur herhaaldelijk gedurende de ontwikkelingslevenscyclus en vertrouw erop dat uw resources op een consistente manier worden geïmplementeerd. Sjablonen zijn idempotent, wat betekent dat u dezelfde sjabloon meerdere keren kunt implementeren en dezelfde resourcetypen in dezelfde status kunt krijgen. U kunt één sjabloon ontwikkelen die de gewenste status vertegenwoordigt, in plaats van een groot aantal afzonderlijke sjablonen te ontwikkelen die updates vertegenwoordigen.

  • Indeling: u hoeft zich geen zorgen te maken over de complexiteit van het ordenen van bewerkingen. Resource Manager organiseert de implementatie van onderling afhankelijke resources, zodat ze in de juiste volgorde worden gemaakt. Indien mogelijk implementeert Resource Manager resources parallel, zodat uw implementaties sneller worden voltooid dan seriële implementaties. U implementeert de sjabloon via één opdracht in plaats van via meerdere imperatieve opdrachten.

    Diagram met het verschil tussen imperatieve en declaratieve implementatie.

  • Modulaire bestanden: u kunt uw sjablonen opsplitsen in kleinere, herbruikbare onderdelen en ze tijdens de implementatie aan elkaar koppelen. U kunt ook een sjabloon in een andere sjabloon nesten.

  • Een Azure-resource maken: u kunt onmiddellijk nieuwe Azure-services en -functies in sjablonen gebruiken. Zodra een resourceprovider nieuwe resources introduceert, kunt u deze resources implementeren via sjablonen. U hoeft niet te wachten totdat hulpprogramma's of modules zijn bijgewerkt voordat u de nieuwe services gebruikt.

  • Uitbreidbaarheid: met implementatiescripts kunt u PowerShell- of Bash-scripts toevoegen aan uw sjablonen. Met de implementatiescripts kunt u resources instellen tijdens de implementatie. Een script kan worden opgenomen in de sjabloon of worden opgeslagen in een externe bron en waarnaar wordt verwezen in de sjabloon. Implementatiescripts bieden u de mogelijkheid om de configuratie van uw end-to-end-omgeving in één ARM-sjabloon te voltooien.

  • Testen: u kunt controleren of uw sjabloon voldoet aan de aanbevolen richtlijnen door deze te testen met de ARM-sjabloonhulpprogrammakit (arm-ttk). Deze testkit is een PowerShell-script dat u kunt downloaden van GitHub. De hulpprogrammakit maakt het eenvoudiger voor u om expertise te ontwikkelen met behulp van de sjabloontaal.

  • Voorbeeld van wijzigingen bekijken: u kunt de wat-als-bewerking gebruiken om een voorbeeld van wijzigingen op te halen voordat u de sjabloon implementeert. Met wat-als ziet u welke resources worden gemaakt, bijgewerkt of verwijderd, en eventuele resource-eigenschappen die worden gewijzigd. De wat-als-bewerking controleert de huidige status van uw omgeving en elimineert de noodzaak om de status te beheren.

  • Ingebouwde validatie: uw sjabloon wordt pas geïmplementeerd nadat de validatie is geslaagd. Resource Manager controleert de sjabloon voordat de implementatie wordt gestart om er zeker van te zijn dat de implementatie slaagt. De kans is kleiner dat uw implementatie wordt gestopt in een half voltooide status.

  • Bijgehouden implementaties: in de Azure Portal kunt u de implementatiegeschiedenis bekijken en informatie ophalen over de sjabloonimplementatie. U kunt de sjabloon zien die is geïmplementeerd, de parameterwaarden die zijn doorgegeven en eventuele uitvoerwaarden. Andere infrastructuur als codeservices worden niet bijgehouden via de portal.

    Schermopname van de Azure Portal met de implementatiegeschiedenis.

  • Beleid als code: Azure Policy is een beleid als codeframework om governance te automatiseren. Als u Azure-beleid gebruikt, wordt beleidsherstel uitgevoerd op niet-compatibele resources wanneer deze worden geïmplementeerd via sjablonen.

  • Implementatieblauwdrukken: u kunt gebruikmaken van blauwdrukken van Microsoft om te voldoen aan regelgevings- en nalevingsstandaarden . Deze blauwdrukken bevatten vooraf gemaakte sjablonen voor verschillende architecturen.

  • CI/CD-integratie: u kunt sjablonen integreren in uw hulpprogramma's voor continue integratie en continue implementatie (CI/CD), waarmee u uw release-pijplijnen kunt automatiseren voor snelle en betrouwbare toepassings- en infrastructuurupdates. Met behulp van Azure DevOps en Resource Manager sjabloontaak kunt u Azure Pipelines gebruiken om continu ARM-sjabloonprojecten te bouwen en implementeren. Zie VS-project met pijplijnen en Zelfstudie: Continue integratie van Azure Resource Manager-sjablonen met Azure Pipelines voor meer informatie.

  • Exporteerbare code: u kunt een sjabloon voor een bestaande resourcegroep ophalen door de huidige status van de resourcegroep te exporteren of de sjabloon te bekijken die voor een bepaalde implementatie wordt gebruikt. Raadplegen van de geëxporteerde sjabloon is een handige manier om de syntaxis van de sjabloon te leren kennen.

  • Ontwerphulpprogramma's: u kunt sjablonen maken met Visual Studio Code en de extensie voor het sjabloonhulpprogramma. U krijgt intelliSense, syntaxismarkering, inline help en vele andere taalfuncties. Naast Visual Studio Code kunt u ook Visual Studio gebruiken.

Sjabloonbestand

In uw sjabloon kunt u sjabloonexpressies schrijven die de mogelijkheden van JSON uitbreiden. Deze expressies maken gebruik van de functies van Resource Manager.

De sjabloon bevat de volgende secties:

  • Parameters : geef tijdens de implementatie waarden op waarmee dezelfde sjabloon kan worden gebruikt met verschillende omgevingen.

  • Variabelen : definieer waarden die opnieuw worden gebruikt in uw sjablonen. Ze kunnen worden samengesteld op basis van parameterwaarden.

  • Door de gebruiker gedefinieerde functies : maak aangepaste functies die uw sjabloon vereenvoudigen.

  • Resources : geef de resources op die moeten worden geïmplementeerd.

  • Uitvoer: retourneert waarden van de geïmplementeerde resources.

Sjabloonimplementatieproces

Wanneer u een sjabloon implementeert, converteert Resource Manager de sjabloon in REST API-bewerkingen. Bijvoorbeeld wanneer Resource Manager een sjabloon ontvangt met de volgende resourcedefinitie:

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2022-09-01",
    "name": "mystorageaccount",
    "location": "centralus",
    "sku": {
      "name": "Standard_LRS"
    },
    "kind": "StorageV2"
  },
]

De definitie wordt geconverteerd naar de volgende REST API-bewerking, die wordt verzonden naar de Microsoft.Storage-resourceprovider:

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": {}
}

U ziet dat de apiVersion die u in de sjabloon voor de resource instelt, wordt gebruikt als de API-versie voor de REST-bewerking. U kunt de sjabloon herhaaldelijk implementeren en erop vertrouwen dat deze blijft werken. Als u dezelfde API-versie gebruikt, hoeft u zich geen zorgen te maken over wijzigingen die fouten veroorzaken die mogelijk in latere versies worden geïntroduceerd.

Gebruik een van de volgende opties om een sjabloon te implementeren:

Sjabloonontwerp

U kunt helemaal zelf bepalen hoe u sjablonen en resourcegroepen definieert en hoe u de oplossing beheert. U kunt de toepassing met drie lagen bijvoorbeeld met een enkele sjabloon implementeren in een enkele resourcegroep.

Diagram met een toepassingsimplementatie met drie lagen met behulp van één sjabloon.

Maar u hoeft uw volledige infrastructuur niet te definiëren in één sjabloon. Vaak is het handiger om uw implementatievereisten te verdelen over een aantal gerichte sjablonen met een specifiek doel. U kunt deze sjablonen eenvoudig opnieuw gebruiken voor verschillende oplossingen. Als u een bepaalde oplossing wilt implementeren, maakt u een hoofdsjabloon die alle vereiste sjablonen koppelt. In de volgende afbeelding ziet u hoe u een oplossing met drie lagen kunt implementeren via een bovenliggende sjabloon die drie geneste sjablonen bevat.

Diagram met een toepassingsimplementatie met drie lagen met behulp van geneste sjablonen.

De lagen hebben afzonderlijke levenscycli, zodat u ze kunt toepassen op verschillende resourcegroepen. Opmerking: de resources kunnen nog steeds worden gekoppeld aan resources in andere resourcegroepen.

Diagram met een toepassingsimplementatie met drie lagen met afzonderlijke resourcegroepen.

Zie Using linked templates with Azure Resource Manager (Gekoppelde sjablonen gebruiken met Azure Resource Manager) voor meer informatie over geneste sjablonen.

Sjablonen delen

Nadat u de sjabloon hebt gemaakt, wilt u deze mogelijk delen met andere gebruikers in uw organisatie. Met sjabloonspecificaties kunt u een sjabloon opslaan als een resourcetype. U gebruikt op rollen gebaseerd toegangsbeheer om de toegang tot de sjabloonspecificatie te beheren. Gebruikers met leestoegang tot de sjabloonspecificatie kunnen deze implementeren, maar de sjabloon niet wijzigen.

Deze aanpak betekent dat u sjablonen die voldoen aan de standaarden van uw organisatie veilig kunt delen.

Volgende stappen