Het ABC van Azure Resource Manager

Door: jan

Werk je met meerdere omgevingen zoals ontwikkeling en productie, dan is het een hele klus om te zorgen dat deze allemaal op dezelfde manier worden geconfigureerd. Eén foute parameter kan namelijk een hele impact hebben.

Om deze uitdaging het hoofd te bieden, lanceerde Microsoft de eerste versie van Azure Resource Manager (ARM) al op Build 2014, samen met een update van het Azure-portaal. Aan de hand van JSON-scripts die je resources definiëren, laat ARM je toe om op een consistente en herhaalbare manier een infrastructuur op te zetten. Hoe het werkt, de voordelen, en meer lees je hieronder.

 

Wat is Azure Resource Manager?

Zonder ARM moet je elk van je middelen apart aanmaken en beheren. Dezelfde infrastructuur opzetten voor verschillende types omgevingen resulteert daardoor in veel handmatig werk dat gevoelig is voor fouten. Azure Resource Manager biedt je een beheer-laag die je toelaat om Infrastructure-as-a-Code (IaC) te gebruiken in je Azure-omgeving. Je legt daarmee de instellingen van je resources vast in code, meestal JSON, zodat je eenvoudig de parameters kan hergebruiken en beheren. Daarnaast brengt ARM resource-groepen met zich mee. Daarmee verzamel je verschillende middelen en waarop je vervolgens templates – in essentie IaC-omschrijvingen in JSON – kan toepassen.

 

De voordelen van Azure Resource Manager

De combinatie van de Azure Resource Manager-templates en resource-groepen brengt heel wat voordelen met zich mee:

  1. Je zet resources op en beheert ze als één geheel. Dit zorgt voor eenvoud, consistentie en integratie doorheen je cloud-infrastructuur.
  2. Je verbetert de veiligheid omdat je gemakkelijk role-based acces control kan opzetten voor individuele resources of volledige groepen vanuit de centrale management-laag.
  3. Via JSON-templates kan je jouw infrastructuur definiëren zodat je niet telkens opnieuw de parameters juist moet zetten. Het zet de consistentie en herhaalbaarheid van je werk extra kracht bij.

 

Wat zijn Azure Resource Manager-templates?

Wanneer we over ARM-templates spreken, bedoelen we de JSON-bestanden die setup van je resources beschrijven. Die hoef je niet altijd zelf te schrijven. GitHub staat er vol mee en ook bij moederbedrijf Microsoft vind je heel wat ARM-templates. Wil je ze zelf maken, dan is het ook mogelijk om bij het aanmaken van een resource via het Azure-portaal je instellingen te exporteren naar een template. Op dat exporteren zitten wel een aantal beperkingen zodat dit niet voor elke resource werkt. Zo’n template bestaat uit vier onderdelen:

 

  1. Parameters: zaken die je in je template injecteert vanuit een tweede parameter-JSON-bestand. Zet je een storage account op dan definieer je bijvoorbeeld mogelijke waardes voor het type.
  2. Variabelen: hier definieer je zaken die je op meerdere plaatsen in je template wilt hergebruiken.
  3. Resources: zaken met betrekking tot de resource zoals pricing tier, welke API je gebruikt of welke resource-groep je kiest.
  4. Outputs: sommige resources geven een output die verder moet gebruikt worden. Die definieer je in dit deel.

 

Hoe ARM-templates inzetten?

Wie een template wilt toepassen via Azure Resource Manager op een resource-groep kan dat op twee manieren doen:

  • Compleet: resources die gedefinieerd staan in je template worden gewijzigd of aangemaakt om in lijn te zijn met de template. Resources die niet in de template staan worden verwijderd.
  • Incrementeel: resources die gedefinieerd staan in je template worden gewijzigd of aangemaakt om in lijn te zijn met de template. Niet-gedefinieerde middelen worden met rust gelaten en dus niet gewijzigd.

Let wel op bij het inzetten van templates: afhankelijk van welke parameter aanpast bij bestaande middelen kan het zijn dat een resource wordt verwijderd en terug aangemaakt.