Geautomatiseerd configuratiemanagement: sneller en preciezer

Configuraties automatiseren met configuratiemanagementtools
Configuraties automatiseren met configuratiemanagementtools
Home / Blog & Nieuws / Cloud / Managed hosting / Geautomatiseerd configuratiemanagement: sneller en preciezer

Tools vervangen handwerk

Configuratiemanagement: niet het meest sexy onderwerp binnen de IT-wereld. Toch is het van essentieel belang. Er valt namelijk veel te winnen bij een gestroomlijnd en geautomatiseerd proces voor configuraties, vertelt Erwin Bleeker, VP Solutions bij True. Tools als Ansible, Chef, Puppet en CFEngine helpen met het sneller, efficiënter en foutlozer leveren van digitale producten zoals websites en webapplicaties.

Wat is configuratiemanagement?

Het doel van configuratiemanagement is het continu optimaal bijhouden van alle componenten binnen IT-omgevingen. Letterlijk alles binnen een omgeving moet je configureren voordat je het kunt gebruiken. Van besturingssystemen tot virtuele servers, van software voor het beheer van applicaties tot alle middleware die je gebruikt om servers draaiend te houden.

Elke wijziging in de software betekent ook dat je moet checken of de configuraties nog kloppen. Een verkeerde configuratie kan ervoor zorgen dat de software en de onderliggende systemen niet meer werken of kwetsbaar worden voor security-aanvallen. Zorgvuldige checks van configuraties voordat een nieuw systeem wordt uitgerold is dus van essentieel belang.

Het handmatig checken of wijzigen van configuraties is prima te doen wanneer de IT-omgeving van de organisatie behapbaar is, zeg een server of 20. Maar het is een uitdaging wanneer je te maken hebt met een omvangrijke omgeving waarbij het doorvoeren van configuraties slepend wordt en bestaat uit vele, repetitieve handelingen. Niemand vindt het leuk om 100 keer dezelfde wijziging door te voeren. Tevens is dit foutgevoelig.

Tools voor configuratiemanagement

Een goede IT’er is een luie IT’er, luidt het gezegde. Dus zijn er ook tools beschikbaar die helpen met het automatiseren van configuraties. Configuratiemanagementtools zoals Ansible, Chef, Puppet en CFEngine bieden een geautomatiseerde uitkomst voor dit probleem.

Het principe achter geautomatiseerde configuratiemanagement is dat het ervoor zorgt dat software-installaties, wijzigingen, applicatie-uitrol en desgewenst opruimacties sneller, efficiënter en nauwkeuriger worden geleverd zonder er te veel mensen naar te laten kijken.

Configuratiemanagementtools worden daarnaast doorgaans ingezet om fouten te voorkomen doordat je uitvoerig kunt testen of er fouten zitten in de configuraties. Zo helpen de tools bij het toepassen van het vierogenprincipe, waardoor je altijd ten minste twee personen hebt die een wijziging controleren.

Alles te automatiseren

Besturingssystemen, servers, firewalls, netwerkcomponenten: het mooie aan een configuratiemanagementtool is dat je vrijwel alles kunt automatiseren. Welke websites wil je dat er actief zijn op de webserver? Wil je er SSL-certificaten bij hebben? Wil je vanuit die website ook redirects meesturen? Allemaal dingen die je vanuit een configuratiemanagementtool kunt inregelen.

Starten met zo’n tool is niet zo ingewikkeld. Je omschrijft een desired state: dit is waarom we het inzetten en wat we eruit willen halen.

Als je het goed implementeert zorg je ook dat er een goede Continuous Integration/Continuous Delivery (CI/CD) pipeline is. Een CI/CD-pipeline helpt met automatiseren van het opleverproces van code, infrastructuur en middleware. In een aantal geautomatiseerde processen (integreren, code-analyse, installeren, testen en uitrol) kun je code, maar steeds vaker ook infrastructuur en middleware vanaf de ontwikkelomgeving naar staging- en productieomgevingen brengen.

Je kunt slechts een recept maken of een playbook voor de configuraties, maar dan sla je een belangrijk gedeelte over. Goede CI/CD-pipelines zorgen ervoor dat je alle processen om de software heen gecheckt worden, dat bepaalde zaken reproduceerbaar zijn en dat een gewijzigde configuratie op grote schaal snel uit is te rollen.

Ook bij grote omgevingen weet je dan dat configuraties consistent zijn over het hele platform: van je acceptatie tot je productie-omgeving. Vaak is er in de software een audit trail beschikbaar, waardoor je precies kunt zien welke acties er zijn doorgevoerd en wie er betrokken bij waren.

Efficiënter testen

Het grootste voordeel is een snelle levering zodat je efficiënter kunt testen. Stel; er komt een nieuwe versie van Ubuntu (een Linux-distributie) uit. Met een configuratiemanagementtool kun je voor livegang de nieuwe configuraties testen. Dit kan je één keer doen of honderd keer, het maakt in principe niet uit.

Ander voorbeeld: er is een securitylek gevonden in een bepaalde versie van scripttaal PHP. Dan wil je dat snel kunnen patchen binnen alle systemen die daar gebruik van maken. Om ervoor te zorgen dat er niets stuk gaat door misconfiguraties, wil je deze patch eerst testen binnen de masterconfiguratie.

Als blijkt dat de patch goed werkt (na uitvoerig getest te hebben), kun je het met een tool als Ansible gelijktijdig uitrollen op alle servers en ben je binnen no-time weer veilig.

Integratie met alle ‘moving parts’

Om automation op grote schaal toe te passen is er meer nodig dan technologie. Ansible is slechts een radertje in het proces. Je moet ook denken aan versiebeheer, aan testmethodes en developmentpipelines. Kortom, je hebt te maken met een heleboel extra ‘moving parts’.

Daarbij is de balans vinden bij het definiëren van een standaard voor breed toepasbare configuraties binnen een IT-landschap een uitdaging. Iteratief komen tot de juiste balans is vaak mogelijk, maar soms is compleet opnieuw beginnen de enige remedie.

Vooral bij de eerste stapjes bij configuratiemanagement opzetten zal men dit ervaren. Bij bijvoorbeeld een webserver zijn veel opties mee te geven voor de algehele configuratie maar ook per website die erop moet draaien. Aan de ene kant is een zo flexibel en dus breed mogelijk in te richten configuratie wenselijk, dat resulteert echter vaak in onoverzichtelijkheid van het configuratiebestand. Een globale wijziging zal dan alsnog in tientallen bestanden bijgewerkt moeten worden.

Het doel om het beheersbaar te maken is dan gefaald. Je kan er ook voor kiezen je best-practices te definiëren op een hoger niveau en enkel de specifieke instellingen voor een website op te nemen. Het configuratiebestand is dan enorm beknopt en dus leesbaar en globaal standaard instellingen wijzigen zal op een ander niveau op slechts 1 plek doorgevoerd hoeven te worden.

Kantelpunt voor automatisering

Er is dus een kantelpunt te definiëren wanneer het slim is om automation op schaal toe te passen. Je hebt een omgeving nodig met een grote schaal of meerdere omgevingen. Waar het kantelpunt ligt is heel diffuus. Duidelijk is in ieder geval dat je onder het kantelpunt beter af bent door handmatig omgevingen te updaten en te deployen. Kom je erboven, overweeg dan een configuratiemanagementtool en richt processen in zodat het beheersbaar blijft.

Helaas ligt dit kantelpunt voor ieder bedrijf weer op een andere plek en is dit dus iets wat je zelf moet gaan uitvinden. Maar als je de schaal hebt, dan is het inzetten van automation processen voor het updaten en managen van IT-omgevingen een logische volgende stap.

Drie populaire configuratiemanagementtools

Puppet

Open-source gebaseerde configuratiemanagementtool voor het automatiseren de IT-infrastructuur levenscyclus, zoals het provisionen, patchen, configureren en management van besturingssystemen. De voertaal om scripts uit te voeren is Ruby.
Website: https://www.puppet.com

Chef

Een tool die veel ingezet wordt door DevOps-teams voor het snel kunnen opzetten van omgevingen, automatisch deployen van wijzigingen en managen van de omgeving om compliance-issues. Net als Puppet gebruikt is de voertaal voor scripts Ruby.

Website: https://www.chef.io

Ansible

Door velen gezien als de industriestandaard voor configuratiemanagement. In staat om vrijwel alle processen binnen IT-infrastructuren te automatiseren. Scripts maken kan in markuptaal YAML en Python. Die taal wordt standaard meegeleverd in Linux, waar veel besturingssystemen voor webservers op gebaseerd zijn. Een voordeel hiervan is dat de adoptiecurve voor systeembeheerders vaak kleiner is dan bij Ruby. Ansible is tevens onderdeel van Red Hat.

Website: https://www.ansible.com

Dit artikel stond eerder in vakblad AGConnect en is voor leden van het vakblad ook online te lezen.

 

True Ligan
Managed hosting sinds 2000