Vroeger kostte het voor IT-beheerders veel tijd om de benodigde hardware voor applicaties te verzamelen, of in meer recentere jaren, bij elkaar te klikken. Voor een applicatie kan worden ontwikkeld volgens het OTAP-principe houdt dat in dat er voor elk van de vier omgevingen de benodigde infrastructuur klaargezet moet worden. Mochten er wijzigingen benodigd zijn, dan moeten deze doorgevoerd worden op alle omgevingen met risico’s op inconsistentie. Daarom wordt er de laatste tijd steeds meer gebruik gemaakt van infrastructure as code. In dit artikel gaan we verder in op wat het betekent, wat de voordelen zijn en hoe het ingezet kan worden.

Geschreven door Bart Wesselink, Head of Development

Terraform

Met infrastructure as code wordt je infrastructuur vastgelegd in bestanden, die leesbaar zijn voor een machine. Bij de infrastructuur kan je denken aan allerlei cloud resources die een (web-)applicatie nodig heeft zoals een database, een opslagplek of een app service. Door deze configuratie in de code vast te leggen kan het met een CI-pipeline (continuous integration) automatisch worden uitgerold naar alle omgevingen.

 

Eén van de manieren waarop infrastructure as code gebruikt kan worden is met Terraform. Terraform is een tool die (cloud) resources kan uitrollen op basis van een aantal principes. Alle resources worden vastgelegd via een speciale taal, HCL. 

In Terraform zorgen plugins (providers) ervoor dat resources van verschillende cloudproviders kunnen worden uitgerold. Er zijn meer dan 1000 verschillende providers beschikbaar, die kunnen communiceren met alle bekende cloud platformen zoals Azure, Google Cloud Platform en Amazon Web Services. 

Definitie

Een provider biedt verschillende resources aan. Deze resources definiëren het type infrastructuur dat moet worden uitgerold. Naast het type, dienen ook een aantal attributen worden opgegeven die per resource verschillend zijn. Je kunt hierbij denken aan bijvoorbeeld een naam, locatie of prijsmodel.

Een voorbeeld van een definitie ziet er als volgt uit:

In de code wordt een Postgres-database uitgerold. Zoals te zien is, heeft deze verschillende eigenschappen, zoals een naam, locatie, resource group (Azure specifieke term, verzameling van resources), type database, versie en opslagruimte.

Het is mogelijk om meerdere resources aan elkaar te linken. Dit betekent dat gelinkte resources in volgorde aangemaakt worden, en informatie van elkaar kunnen gebruiken. Het aanmaken van een resource group en een database ziet er dan uit zoals hier links is afgebeeld.

Uitrol

Wanneer de configuratie gereed is, kan Terraform een zogeheten plan maken. In dit plan staat welke resources er moeten worden aangemaakt, bewerkt of verwijderd worden. Indien dit plan overeenkomt met wat verwacht wordt, kan dit plan worden uitgevoerd en zullen de Terraform-providers hun werk doen en alle infrastructuur aanvragen bij de cloud platformen.

Ook binnen Recognize werken wij met veel verschillende cloud resources en rollen wij deze uit met Terraform. Meer weten? Of heb je vragen over dit onderwerp? Neem gerust contact op!

LET’S
CONNECT!

Benieuwd naar wat we voor jou kunnen betekenen? Of kun je iets voor ons betekenen? Dan horen we graag van je! Bel of mail gerust. We komen graag langs om kennis te maken. En natuurlijk staan onze deuren op de zevende verdieping van de Javatoren in Almelo ook altijd voor je open.