Hoe deploy je resources via Azure DevOps?

Posted on Posted in BCONN Nieuws

Artikel geschreven door Niek Verspaget, technisch consultant Azure bij BCONN ICT.

Sinds september 2018 heeft Microsoft Azure DevOps uitgebracht, als opvolger van Visual Studio Team Services. De naam Visual Studio suggereert voor veel mensen dat het “iets voor ontwikkelaars” is. Maar… dat beeld klopt eigenlijk al jaren niet meer.

Zo biedt Azure DevOps bijvoorbeeld ook ondersteuning voor ARM Templates, Terraform of PowerShell. Dit implementeer je in Azure, het eigen on-premises datacenter of bijvoorbeeld AWS. Daarbij heb je ook de voordelen die een tool als Visual Studio heeft, zoals version control (Git). Bovendien is Azure DevOps uitermate geschikt om aan Infrastructure-as-Code (IaC) te doen voor jouw Azure omgeving. De wereld voor jou als techneut verandert snel, waarbij automation een steeds belangrijkere rol speelt.

Genoeg achtergrond, tijd voor de praktijk!

In dit artikel neem ik jullie mee in het deployen (basics) van resources in Azure door middel van Azure DevOps. Hieronder zie je een schematische opzet van het deployen van resources door middel van Azure DevOps:

De opbouw met Azure Repos en Azure Pipelines
De twee belangrijkste componenten die ik beschrijf zijn de Azure Repos- en Pipelines.

Azure Repos

De Azure Repos is de centrale repository van code die je als organisatie (of persoonlijk) maakt. Door gebruik te maken van Git kun je ook “versiebeheer” toepassen op de door jou gemaakte code.
Belangrijk is dat je hierin de juiste keuzes maakt qua opzet. Denk hierbij aan vragen als:

  • Hoeveel repositories ga ik nodig hebben? Hoe richt ik deze in (per subscription/resourcegroup et cetera)?
  • Ga je werken met “integratie” of “acceptatie” branches?
  • Hoe ga je om met pull-requests naar de master branch toe? Richt je hier een approval workflow voor in?

Omdat Azure Repos gebruik maakt van de “standaard” Git, kun je deze gemakkelijk gebruiken in combinatie met alle bekende development tools. Persoonlijk werk ik graag met Visual Studio Code, voornamelijk vanwege de integratie met bijvoorbeeld Azure CloudShell. Op die manier kun je jouw scripts (of templates) rechtstreeks vanuit Visual Studio Code testen tegen Azure. Hieronder zie je een voorbeeld van Azure Repos met daarin een ARM-template om een VNET aan te maken:

Azure Pipelines

Wanneer je jouw code geprepareerd hebt in een Azure Repos zul je deze door moeten zetten naar de Azure Pipeline. Op dit moment zijn dit nog twee losse stappen; Build (CI) en Release (CD, maar daar komt verandering in…) Op dit moment zit het nog in Preview, maar binnenkort komt de optie beschikbaar om “Multi-staged Pipelines” aan te maken.

bron: https://devblogs.microsoft.com/devops/whats-new-with-azure-pipelines/

Azure Build Pipeline (CI)
Als eerste zal je de code die je hebt gemaakt moeten “builden” naar een artifact. Wat je in zo’n Build Pipeline in principe doet is het ophalen van de ARM-files (in dit geval) uit de Azure Repos en deze plaatsen in een Artifact zodat we ze kunnen gebruiken in een Release Pipeline. In de Build Pipeline kun je ook allerlei extra’s inbouwen, zoals bijvoorbeeld het verifiëren van het ARM-template tegen een Resource Group, of het ophalen van secrets uit een Azure KeyVault die je gebruikt in je Release Pipeline. Hieronder zie je een simpele Build Pipeline voor het ophalen van files en plaatsen in een Artifact:

Azure Release Pipeline (CD)
Wanneer de code- en/of templates in een Azure Artifact zijn geplaatst, kun je deze vervolgens gebruiken in een Release Pipeline. Hier heb je vervolgens een legio aan mogelijkheden om jouw resources aan te maken. Denk hierbij aan het maken van verschillende stappen (Stages) per omgeving, of meerdere Jobs per stap (Stage). Maar het is bijvoorbeeld ook mogelijk om jouw resources direct met Azure CLI aan te maken vanuit de Release Pipeline, op die manier heb je helemaal geen ARM-templates nodig. Zo’n Release Pipeline met meerdere Stages en jobs ziet er bijvoorbeeld zo uit:

Kortom, er zijn volop mogelijkheden om jouw infrastructuur op maat uit te rollen in Azure!

Wil je hierover meer weten? Neem dan even contact op met mij:

Niek Verspaget
Technisch Consultant Azure
niek.verspaget@bconn.nl