Terraform: wat zijn de mogelijkheden en waarom is de Infrastructuur als Code tool populair?

Terraform
Terraform
Home / Blog & Nieuws / Development / Terraform: wat zijn de mogelijkheden en waarom is de Infrastructuur als Code tool populair?

Een populaire Infrastructuur als Code (IaC)-tool is Terraform. Terraform is een open source declarative tool ontwikkeld door HashiCorp waarmee ontwikkelaars de gewenste infrastructuur omschrijven. Terraform creëert vervolgens een plan voor het provisioneren van deze infrastructuur en voert dit plan uit. Wat zijn de mogelijkheden en waarom is Terraform populair? En hoe verhoudt de tool zich tot Kubernetes?

Infrastructuur als Code

Voor een goed begrip van de voordelen van Terraform is voldoende kennis van Infrastructuur als Code (IaC) van belang. IaC is een aanpak die ontwikkelaars in staat stelt tot het coderen van infrastructuur op een wijze die provisionering automatiseert, versnelt en herhaalbaar maakt. IaC speelt een cruciale rol bij bijvoorbeeld DevOps-werkwijzen zoals continuous integration & continuous deployment.

IaC vergroot onder meer de betrouwbaarheid van een infrastructuur. Zeker indien een infrastructuur omvangrijk is vormen misconfiguraties van resources of het in de verkeerde volgorde provisioneren van services een risico. IaC automatiseert dit proces en zorgt altijd voor een juiste provisioneren en configuratie van resources.

Ook snelheid is een belangrijk voordeel van Infrastructuur als Code. Door het geautomatiseerd configureren van resources en provisioneren van services realiseert de aanpak onder meer tijdwinst. Automatiseren is immers altijd sneller dan het handmatig aanpassen van bijvoorbeeld configuraties via een interface.

IaC vereenvoudigt en versnelt daarnaast het provisioneren van nieuwe infrastructuur. Dit biedt belangrijke voordelen. Zo kan je eenvoudiger experimenten uitvoeren en bijvoorbeeld experimentele wijzigingen aan een configuratie uitbrengen. Zonder dat dit veel tijd of resources vraagt. Bevalt het eindresultaat? Dan kan je de wijzigingen eenvoudig uitrollen naar de productieomgeving.

Open source declarative tool

Een populaire IaC-tool is Terraform, een open source tool ontwikkeld door HashiCorp. Met behulp van deze zogeheten declarative tool kunnen ontwikkelaars de gewenste infrastructuur omschrijven in een configuratietaal genaamd HashiCorp Configuration Language (HCL). Terraform hanteert hiervoor eenvoudige syntax en kan infrastructuur provisioneren verspreid over meerdere cloudomgevingen en on-premise datacenters. Vinden er wijzigingen plaats in de configuratie? Dan kan Terraform de infrastructuur efficiënt en veilig herprovisioneren.

De IaC-tool werkt onder meer met modules. Deze modules maken het groeperen van resources mogelijk. Deze groep resources wordt vervolgens beheerd als een enkelvoudige resource. Modules zijn herbruikbaar, kunnen met elkaar communiceren en kunnen meerdere malen worden opgeroepen. Een overzicht van beschikbare modules is hier beschikbaar.

Wat maakt Terraform populair?

Een aantal kenmerken maken Terraform voor Infrastructuur als Code een populaire keuze voor ontwikkelaars. Een greep uit de belangrijkste kenmerken:

  • Platform-agnostisch: Veel IaC-tools zijn ontworpen voor gebruik in combinatie met een specifieke cloud provider. Terraform wijkt hiervan af en is platform-agnostisch. Dit betekent in de praktijk dat de tool geschikt is voor gebruik in combinatie met iedere willekeurige cloud service provider.
  • Immutable infrastructure: Een ander punt waar Terraform afwijkt van veel andere IaC-tools is de mogelijkheid tot het creëren van zogeheten immutable infrastructure. Veel IaC-tools creëren juist mutable infrastructure, die zich kan aanpassen aan veranderingen. Denk hierbij aan het upgraden van de middleware. Mutable infrastructure kan echter leiden tot zogeheten configuration drift. De daadwerkelijke provisionering van infrastructuur komt hierbij steeds verder af te liggen van de oorspronkelijke configuratie. Dit kan onder meer leiden tot softwarefouten en prestatieproblemen. Terraform creëert echter immutable infrastructure. Bij iedere wijziging aan de infrastructuur is hierdoor een nieuwe configuratie nodig, waarin deze wijziging is verwerkt. Terraform gaat zo configuration drift tegen. Het bewaren van eerdere configuraties vereenvoudigt daarnaast eventuele noodzakelijke rollbacks.
  • Open source: Terraform is een open source tool met een brede achterban; een groot aantal developers draagt bij aan de ontwikkeling van de IaC-tool. Dit vereenvoudigt onder meer het vinden van onder meer plugins en extensies voor het uitbreiden van de mogelijkheden van Terraform. Dankzij de brede achterban ontwikkelt Terraform zich daarnaast snel en wordt continu vernieuwd.

Terraform vereenvoudigt ook het verbinden met applicaties met externe services. Hiervoor zijn zogeheten providers beschikbaar. Een provider omvat alle code die nodig is voor het authentiseren van gebruikers en verbinden met een externe service. Voor nagenoeg iedere grote cloudprovider en elke populair SaaS-product zijn providers verkrijgbaar. Een overzicht van de beschikbare providers is hier beschikbaar.

Terraform en Kubernetes

Terraform en Kubernetes kunnen een krachtige combinatie vormen en effectief met elkaar samenwerken. Kubernetes is een open source containerorkestratieplatform waarmee ontwikkelaars deployments op nodes in een computerclusters kunnen orkestreren en containerized workloads kunnen beheren. Developers kunnen Terraform inzetten voor het geautomatiseerd provisioneren van Kubernetes. En voor het geautomatiseerd uitrollen van applicaties in een cluster.

Benieuwd naar de mogelijkheden? De experts van True denken graag met je mee! Neem contact met ons op voor meer informatie.

Axel Schutte
Online Marketing Manager