Waarom je een server NOOIT handmatig moet installeren

Joost

Geschreven door Joost Saanen op 15-3-2018
3 minuten leestijd

Waar vroeger nog sprake was van een duidelijke scheiding tussen systeembeheerders en programmeurs, zie je tegenwoordig dat deze vakgebieden elkaar steeds meer overlappen. Een voorbeeld hiervan is de opmars van de DevOps engineer, waarbij je kunt spreken over een combinatie van de functies Dev(ontwikkelaar) en Ops (operator / system admin).

Niet toevallig dus, dat er steeds vaker methodieken en best practices tussen de twee vakgebieden onderling worden “geruild”. Infrastructure as Code (IaC) is hier een voorbeeld van. Want de Infrastructuur, iets voor een operator, benaderen als code. Uh code, dat is toch voor developers?

Het opzetten of installeren van een server gaat gepaard met het afvuren van de nodige terminal commando’s en configureren van files en services. In de context van cloudhosting en scalable infrastructures is het bijna ondenkbaar dat je deze omgevingen met de hand op zet. Helaas is deze werkwijze bij veel ICT bedrijven nog niet helemaal ingeburgerd. Zo komt het nog (te) vaak voor dat een server of infrastructuur op de traditionele manier wordt opgezet, met het handje dus.

Bij Kabisa installeren we onze servers en infrastructuren uitsluitend nog met automated tools. Voor de techneuten: hier maken we gebruik van Terraform, Cloudformation en Ansible. IaC zorgt niet alleen voor veel snelheidswinst – en daardoor een goedkopere propositie van onze diensten – maar ze hebben nog vele andere voordelen.

Ik noem er een paar:

Documentatie

Opzetten van infrastructuur d.m.v. code zorgt ook meteen voor documentatie. Wanneer je een server of infrastructuur handmatig opzet, is het vaak noodzakelijk om alle commando’s die je hebt gebruikt te documenteren. Bij een IaC-project is dit overbodig omdat de code ook meteen je documentatie is. Je infrastructuur ligt vast in je IaC-project.

Infrastructuur met versiebeheer

Omdat de code wordt bijgehouden in een versiebeheersysteem(zoals bijv. Git) wordt er ook een log of history bijgehouden van alle wijzigingen. Als DevOps-engineer kun je zien hoe een omgeving is opgezet en wat je collega vóór je, allemaal heeft gedaan.

Hergebruik

Heb je een nieuwe omgeving nodig voor een klant? Een kopie van test-omgeving? Fluitje van een cent – variabelen aanpassen en go! Binnen enkele minuten heb je een nieuwe omgeving opgetuigd (disclaimer: ervan uitgaande dat je host in de cloud en niet eerst nieuwe hardware moet aanschaffen).

Uitwijk bij calamiteiten

Deze is gerelateerd aan het punt hierboven. Ook wanneer je hostingprovider een probleem heeft, kun je doordat je de omgeving snel op kunt zetten, dus ook sneller uitwijken naar een ander datacentrum. Uiteraard gaat hier wel het nodige testen aan vooraf.

Updates en patches

Updates en patches zijn makkelijker uit te voeren. In je IaC project is het doorgaans slechts het aanpassen van een versienummer en het draaien van een script. Vaak kun je deze updates en patches ook parallel op meerdere machines uitrollen. Dit scheelt niet alleen tijd maar, omdat het automatisch gebeurd, is de kans op fouten ook véél kleiner.

One more thing

Natuurlijk is bij IaC-projecten ook niet alles rozengeur en maneschijn. Wanneer er iets kapot gaat heb je misschien als beheerder de neiging om even in te loggen op een server en handmatig iets te veranderen. Zo is het probleem snel verholpen. Zou je denken. Let hier wel mee op. Zorg er dan namelijk voor dat je deze wijziging ook doorvoert in je IaC-project. Zo voorkom je inconsistentie tussen de code (die de state van je omgeving bijhoudt) en de échte omgeving. Doe je dit niet, dan raakt je IaC-project in de stress.

Dus wil je aan de slag gaan met Infrastructure as Code, is dit iets om in je achterhoofd te houden. Het heeft dus ook te maken met discipline. Acties van eigenwijze DevOps-engineers die handmatige wijzigingen doorvoeren, dienen niet te worden getolereerd :-)

Managed Services

Ben je geïnteresseerd geraakt door dit verhaal? Ben je eigenaar van een webshop of webapplicatie en wil je meer weten over onze manier van opzetten van infrastructuren en servers? Of ben je misschien beheerder van een webapplicatie of (meerdere) servers en heb je hulp nodig bij de implementatie van Infrastructure as Code? Bij Kabisa hebben we een speciale afdeling Managed Services met beheer- en cloudspecialisten, die zich hier dagelijks mee bezighouden. Neem gerust eens contact met ons op.

Joost

Joost Saanen

Gepassioneerde all-rounder met brede interesses; van serverbeheer en cloudhosting tot (UI)design en (web)development. Hardloopt en schrijft het liefst tegelijk.