Wat is Infrastructure as code (IaC)?

Een methode om de configuratie van infrastructuur zoals servers, netwerken en opslag niet met de hand, maar in code (definitiebestanden) te beschrijven en haar met tools automatisch aan te maken en te wijzigen. Bij declaratieve tools schrijft men de gewenste configuratie, en de tool past alleen het verschil met de werkelijke toestand toe; dezelfde definitie willekeurig vaak toepassen geeft dus hetzelfde resultaat (idempotentie). Door de definities in Git of iets vergelijkbaars te beheren, worden de wijzigingsgeschiedenis, reviews en het reproduceren van identieke omgevingen eenvoudig.

Japanse benaming: IaC(Infrastructure as Code)

“Infrastructure as code (IaC)” komt voor in 1 oefenvragen uit 1 onderwerpen, bijv. Basis van cloud en containers.

Vakgebied: Basis van cloud en containers

Declaratief tegenover procedureel

In een declaratieve stijl schrijft men het resultaat, zoals „twee virtuele machines”, en de tool vergelijkt dat met de huidige toestand om te bepalen wat er moet gebeuren. In een procedurele stijl schrijft men handelingen in volgorde, zoals „maak een virtuele machine”, en moet men dus met de huidige toestand rekening houden; twee keer uitvoeren kan vier machines opleveren. Declaratieve methoden, die idempotentie eenvoudig maken, worden veel gebruikt voor de configuratie van infrastructuur.

Configuratiedrift

Als iemand een instelling met de hand verandert, bijvoorbeeld via een beheerconsole, gaat de werkelijke toestand van de code afwijken. Een declaratieve tool toont het verschil vóór het toepassen, zodat zulke drift kan worden gevonden. Als elke wijziging via de code wordt doorgevoerd, blijft de toestand van de omgeving met de code overeenkomen.

Review en reproduceerbaarheid

Definitiebestanden net als programma's in Git beheren legt vast wie wat wanneer heeft veranderd, en maakt het mogelijk wijzigingen te reviewen voordat ze worden toegepast. Staging en productie uit dezelfde definities aanmaken vermindert bovendien problemen die door verschillen tussen omgevingen ontstaan. Vertrouwelijke waarden zoals wachtwoorden worden niet rechtstreeks in definitiebestanden geschreven, maar met daarvoor bestemde mechanismen beheerd.

Nu oefenen: vragen over Infrastructure as code (IaC)

Een omgeving is gemaakt door met een declaratieve tool voor IaC (infrastructure as code) een bestand toe te passen dat een netwerk en twee virtuele machines definieert. Direct daarna wordt hetzelfde bestand zonder enige wijziging opnieuw toegepast. Wat gebeurt er dan?

  1. AEr is geen verschil tussen de definitie en de werkelijke toestand, dus er wordt niets veranderd
  2. BEr wordt nog een identieke set gemaakt, wat vier virtuele machines oplevert
  3. COmdat de omgeving al bestaat, stopt de tweede toepassing met een fout
Antwoord en toelichting tonen

Antwoord: A. Er is geen verschil tussen de definitie en de werkelijke toestand, dus er wordt niets veranderd

Bij declaratieve IaC beschrijft de code de gewenste configuratie in plaats van de stappen, en de tool vergelijkt die met de werkelijke toestand en maakt, wijzigt of verwijdert alleen wat verschilt. Dezelfde definitie willekeurig vaak toepassen geeft dus hetzelfde resultaat (idempotentie), en de tweede toepassing verandert niets. Als iemand een instelling met de hand verandert en de werkelijke toestand van de definitie afwijkt (configuratiedrift), brengt de volgende toepassing haar terug naar de gedefinieerde toestand. Door de definities in Git te beheren, zijn bovendien historiecontroles en reviews mogelijk, net als bij programma's.

Veelgestelde vragen

Maakt IaC handmatige configuratie overbodig?

Veel van het werk kan in code worden omgezet, maar sommige handmatige stappen, zoals de eerste instelling van de authenticatie, blijven. Waar het om gaat, is handmatige wijzigingen niet zo te laten, maar ze in de code op te nemen, zodat de code en de werkelijke toestand overeen blijven komen.

Hoe hangt IaC samen met containers?

IaC wordt gebruikt om fundamenten zoals netwerken, virtuele machines en clusters te bouwen, en de applicaties die daarop draaien, worden vaak als containerimages geleverd. Manifesten van Kubernetes volgen hetzelfde idee als IaC, omdat ze een gewenste toestand declareren.

“Infrastructure as code (IaC)” in de toelichting

Vragen met “Infrastructure as code (IaC)” (1)

  1. Een omgeving is gemaakt door met een declaratieve tool voor IaC (infrastructure as code) een bestand toe te passen dat een netwerk en twee virtuele machines definieert. Direct daarna wordt hetzelfde bestand zonder enige wijziging opnieuw toegepast. Wat gebeurt er dan?

Verwante termen

Git Autoscaling Beschikbaarheidszone (availability zone) Blue-green deployment Canary release Container Containerimage Docker Immutable infrastructure (onveranderlijke infrastructuur) Kubernetes

Naar de woordenlijst