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 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 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 JSON-bestand (JavaScript Object Notation) dat de infrastructuur en configuratie voor 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 die 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 om 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 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 nodig hebt.

  • Herhaalbare resultaten: implementeer uw infrastructuur herhaaldelijk gedurende de ontwikkelingslevenscyclus en vertrouw erop dat uw resources consistent 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.

    Template deployment comparison

  • 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 tot de 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. 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 gemakkelijker expertise ontwikkelen met behulp van de sjabloontaal.

  • Voorbeeldwijzigingen: 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 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 ervoor te zorgen dat de implementatie slaagt. Uw implementatie is minder waarschijnlijk gestopt met 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.

    Deployment history

  • 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 deze worden geïmplementeerd via sjablonen.

  • Implementatieblauwdrukken: u kunt gebruikmaken 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 Azure DevOps- en Resource Manager-sjabloontaken 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.

  • Exportbare 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 naar REST API-bewerkingen. Bijvoorbeeld wanneer Resource Manager een sjabloon ontvangt met de volgende resourcedefinitie:

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2019-04-01",
    "name": "mystorageaccount",
    "location": "westus",
    "sku": {
      "name": "Standard_LRS"
    },
    "kind": "StorageV2",
    "properties": {}
  }
]

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=2019-04-01
REQUEST BODY
{
  "location": "westus",
  "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 er vertrouwen in hebben dat deze blijft werken. Als u dezelfde API-versie gebruikt, hoeft u zich geen zorgen te maken over wijzigingen die in latere versies kunnen 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.

three tier template

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.

nested tier template

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.

tier template

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 uw sjabloon hebt gemaakt, kunt u deze delen met andere gebruikers in uw organisatie. Met sjabloonspecificaties kunt u een sjabloon opslaan als 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 veilig sjablonen kunt delen die voldoen aan de normen van uw organisatie.

Volgende stappen