Wat zijn ARM-sjablonen?

Met de overstap naar de cloud hebben veel teams flexibele ontwikkelingsmethoden aangenomen. Deze teams worden snel itereren. 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 uniform proces.

Om deze uitdagingen het hoofd te bieden, kunt u implementaties automatiseren en de infrastructuur als code gebruiken. In code definieert u de infrastructuur die moet worden geïmplementeerd. De infrastructuurcode wordt onderdeel van uw project. Net als bij toepassingscode, kunt u de infrastructuurcode opslaan in een bronopslagplaats en versie ervan gebruiken. Iedereen in uw team kan de code uitvoeren en vergelijkbare omgevingen implementeren.

Als u infrastructuur als code voor uw Azure-oplossingen wilt implementeren, gebruikt Azure Resource Manager sjablonen (ARM-sjablonen). De sjabloon is een JavaScript Object Notation (JSON)-bestand 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 u wilt implementeren en de eigenschappen voor deze resources.

We hebben een nieuwe taal geïntroduceerd met de naam Bicep die wordt gebruikt voor het ontwikkelen van ARM-sjabloon-JSON. Bicep-bestanden en JSON-sjablonen bieden dezelfde mogelijkheden. U kunt sjablonen converteren tussen de twee talen. Bicep biedt een syntaxis die gemakkelijker te gebruiken is voor het maken van sjablonen. 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 kiezen voor ARM-sjablonen?

Als u wilt kiezen tussen het gebruik van ARM-sjablonen en een van de andere infrastructuur als codeservices, moet 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 heb er vertrouwen in 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 veel afzonderlijke sjablonen te ontwikkelen om updates weer te geven.

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

    Sjabloonimlementatie vergelijking

  • Modulaire bestanden: u kunt uw sjablonen opdelen in kleinere, herbruikbare onderdelen en deze tijdens de implementatie aan elkaar koppelen. U kunt ook één 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 tot hulpprogramma's of modules zijn bijgewerkt voordat u de nieuwe services gebruikt.

  • Uitvoegbaarheid: met implementatiescriptskunt u PowerShell- of Bash-scripts toevoegen aan uw sjablonen. De implementatiescripts breiden uw mogelijkheid uit om resources in te stellen 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 uw end-to-end-omgevingsinstallatie in één ARM-sjabloon te voltooien.

  • 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 tool kit kunt u gemakkelijker expertise ontwikkelen met behulp van de sjabloontaal.

  • Voorbeeld van wijzigingen: u kunt de what-if-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 welke resource-eigenschappen worden gewijzigd. De what-if-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 doorgeslagen. Resource Manager controleert de sjabloon voordat de implementatie wordt uitgevoerd om er zeker van te zijn dat de implementatie slaagt. De kans is kleiner dat uw implementatie wordt gestopt met de status Half voltooid.

  • Bijgespoorde implementaties: in Azure Portal kunt u de implementatiegeschiedenis controleren en informatie over de sjabloonimplementatie verkrijgen. U ziet de sjabloon die is geïmplementeerd, de doorgegeven parameterwaarden en eventuele uitvoerwaarden. Andere infrastructuur als codeservices worden niet bij te houden via de portal.

    Implementatiegeschiedenis

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

  • Blauwdrukken voor implementatie: u kunt profiteren van blauwdrukken van Microsoft 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 CI/CD-hulpprogramma's (continue integratie en continue implementatie), 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 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 krijgen door de huidige status van de resourcegroep te exporteren of door de sjabloon weer te geven die wordt gebruikt voor een bepaalde implementatie. 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, syntaxis markeren, in-line help en vele andere taalfuncties. Naast de Visual Studio Code kunt u ook Visual Studio.

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 waarden op tijdens de implementatie, zodat 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.

Sjabloonimlementatie proces

Wanneer u een sjabloon implementeert, Resource Manager de sjabloon omgezet in 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 zeker van zijn dat deze blijft werken. Door dezelfde API-versie te gebruiken, 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.

sjabloon met drie lagen

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.

sjabloon met geneste lagen

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.

sjabloon met lagen

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 veilig sjablonen kunt delen die voldoen aan de normen van uw organisatie.

Volgende stappen

  • Zie Zelfstudie: Uw eerste ARM-sjabloon maken en implementeren voor een stapsgewijs zelfstudie die u door het proces van het maken van een sjabloon leidt.
  • Raadpleeg Resources implementeren en beheren in Azure met behulp van ARM-sjablonen voor meer informatie over ARM-sjablonen via een begeleide set modules.
  • Zie Inzicht in de structuur en syntaxis van ARM-sjablonen voor meer informatie over de eigenschappen in sjabloonbestanden.
  • Zie Voor meer informatie over het exporteren van sjablonen Quickstart:ARM-sjablonen maken en implementeren met behulp van de Azure Portal .
  • Zie Veelgestelde vragen over ARM-sjablonen voor antwoorden op veelgestelde vragen.