Share via


Wat zijn ARM-sjablonen?

Met de overstap naar de cloud hebben veel teams flexibele ontwikkelmethoden aangenomen. 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 deel uitmaakt van het iteratieve proces, is de verdeling tussen bewerkingen en ontwikkeling verdwenen. Teams moeten infrastructuur- en toepassingscode beheren via een geïntegreerd 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 versiet u deze. 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 resources op die moeten worden geïmplementeerd en de eigenschappen voor deze resources.

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 gaan met ARM-sjablonen.

Waarom ARM-sjablonen kiezen?

Als u probeert te beslissen 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 een volledige Azure-infrastructuur declaratief maken en implementeren. U kunt bijvoorbeeld niet alleen virtuele machines implementeren, maar ook de netwerkinfrastructuur, opslagsystemen en andere resources die u nodig hebt.

  • Herhaalbare resultaten: implementeer uw infrastructuur herhaaldelijk gedurende de ontwikkelingslevenscyclus en zorg ervoor dat uw resources op een consistente manier worden geïmplementeerd. Sjablonen zijn idempotent, wat betekent dat u dezelfde sjabloon vaak kunt implementeren en dezelfde resourcetypen in dezelfde status kunt krijgen. U kunt één sjabloon ontwikkelen die de gewenste status vertegenwoordigt, in plaats van veel afzonderlijke sjablonen te ontwikkelen om updates weer te geven.

  • Indeling: U hoeft zich geen zorgen te maken over de complexiteit van bestelbewerkingen. 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 deze koppelen tijdens de implementatie. U kunt ook één sjabloon in een andere sjabloon nesten.

  • Maak een Azure-resource: 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 worden 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. Met implementatiescripts kunt u de end-to-end-omgeving instellen in één ARM-sjabloon.

  • Testen: U kunt ervoor zorgen dat uw sjabloon de aanbevolen richtlijnen volgt door deze te testen met de ARM-sjabloontoolkit (arm-ttk). Deze testkit is een PowerShell-script dat u kunt downloaden van GitHub. Met de toolkit kunt u eenvoudiger expertise ontwikkelen met behulp van de sjabloontaal.

  • Preview-wijzigingen: u kunt de wat-als-bewerking gebruiken om een voorbeeld van wijzigingen te krijgen voordat u de sjabloon implementeert. Met wat-als ziet u welke resources worden gemaakt, bijgewerkt of verwijderd en welke resource-eigenschappen 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 ervoor te zorgen dat de implementatie slaagt. Uw implementatie is minder waarschijnlijk gestopt in een half voltooide status.

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

    Schermopname van 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 voor niet-compatibele resources wanneer ze worden geïmplementeerd via sjablonen.

  • Implementatieblauwdrukken: u kunt profiteren van blauwdrukken die door Microsoft worden geleverd om te voldoen aan regelgevings- en nalevingsstandaarden . Deze blauwdrukken bevatten vooraf gebouwde 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 releasepijplijnen kunt automatiseren voor snelle en betrouwbare updates voor toepassingen en infrastructuur. Met behulp van de azure DevOps- en Resource Manager-sjabloontaak kunt u Azure Pipelines gebruiken om voortdurend ARM-sjabloonprojecten te bouwen en te 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 weer te geven 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 waarmee de mogelijkheden van JSON worden uitgebreid. Deze expressies maken gebruik van de functies van Resource Manager.

De sjabloon bevat de volgende secties:

  • Parameters : geef waarden op tijdens de implementatie 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 : aangepaste functies maken 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 hebt ingesteld, 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 belangrijke wijzigingen die mogelijk in latere versies worden geïntroduceerd.

Als u een sjabloon wilt implementeren, gebruikt u een van de volgende opties:

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 implementatie van een toepassing met drie lagen met éé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 implementatie van een toepassing 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 implementatie van een toepassing 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 niet de sjabloon wijzigen.

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

Volgende stappen