Met de komst van virtuele machines, cloud-omgevingen en containers worden ‘automation’ en ‘configuration management’ steeds belangrijker. Maar wat is automation? Volgens WIKI is automation de technologie om een proces of procedure uit te voeren zonder menselijke interactie. Configuration management is de technologie om veranderingen te ontdekken en te controleren. Dat klinkt allemaal heel aantrekkelijk maar er zal toch altijd menselijke input nodig zijn om de technologie te laten doen wat wij voor ogen hebben.
Waarom?
Configuration Management (CM) zorgt ervoor dat systemen en omgevingen eenduidig ingericht worden op een manier die centraal is vastgelegd. Dit wordt ook wel de ‘Desired State’ van een systeem of omgeving genoemd. Bijvoorbeeld op een webserver willen we dat de webserversoftware geïnstalleerd is, dat deze op een juiste manier geconfigureerd is, dat de service ervoor automatisch gestart wordt, dat de webserver bereikt kan worden en dat de content juist is. CM zorgt ook dat ‘Configuration Drift’ gedetecteerd en voorkomen wordt. Bijvoorbeeld dat voorkomen wordt dat meerdere webservers een afwijkende configuratie hebben. Hierdoor wordt de stabiliteit van de omgeving verbeterd. CM maakt het ook mogelijk om ad hoc wijzigingen aan te brengen op een groep van systemen, zodat een beheerder niet alle systemen af hoeft te gaan om de wijziging door te voeren waarbij de kans bestaat dat er variaties optreden.
Producten
Voor wat het IT landschap betreft is de laatste jaren een aantal producten ontstaan die automation en CM mogelijk maken. We noemen een drietal die populair zijn:
Puppet (2005) en Chef (2009) zijn de oudgedienden in dit rijtje waarbij Ansible (2012) een redelijk jonge ontwikkeling is. Deze producten zijn ontstaan vanuit een open-source-ontwikkeling en gaandeweg gecommercialiseerd. Dit betekent dat de producten via Open Source vrij beschikbaar zijn, maar voor support ben je wel aangewezen op wat er op Internet te vinden is. Het commerciële product kan support bieden in diverse gradaties en het product is ook enterprise-waardig gemaakt door toevoegingen en verbeteringen. Denk bijvoorbeeld aan een grafische userinterface die dient als dashboard voor de beheerde omgeving.
Idempotency
‘Idempotency’ is term die veel gebruikt wordt als over CM wordt gesproken. Het geeft aan dat de eigenschap van een object of systeem niet verandert als de operatie op het object of systeem nogmaals wordt uitgevoerd. Bijvoorbeeld, er wordt een entry aan het host-bestand toegevoegd. Bij elke uitvoering wordt gecontroleerd of de gewenste entry aanwezig is. Als dat zo is wordt deze niet meer toegevoegd. Als de entry niet aanwezig is, wordt de entry toegevoegd. Het verschil tussen automation en CM is dan ook idempotency. CM heeft idempotency in zijn genen. Automation is per definitie niet idempotent maar kan eventueel wel zo gemaakt worden. Puppet en Chef zijn zowel CM- als automation-tools. Ansible is in principe een automation-tool, maar modules zijn doorgaans zo geprogrammeerd dat idempotency mogelijk is.
Masters en nodes
In een automation- of CM-omgeving is doorgaans sprake van een master of een bron waar de configuraties en/of taken zijn vastgelegd die op de diverse systemen toegepast moeten worden. Deze master kan op een enkel systeem aanwezig zijn in kleinere omgevingen of op meerdere systemen om de load te verdelen en/of om een hogere beschikbaarheid te waarborgen. Deze master bevindt zich op een Linux omgeving. De nodes kunnen van diverse pluimage zijn. Voor de drie eerder genoemde producten worden o.a. AIX, BSD, HP-UX, Linux, OS X, Solaris en Windows als operating system ondersteund. Voor Linux worden diverse distributies ondersteund zoals o.a. Red Hat/CentOS/Oracle Linux, Debian/Ubuntu en SUSE. Maar ook voor cloud- en container-omgevingen is er in meer of mindere mate ondersteuning.
Agents
Puppet en Chef werken met agents. Dat betekent dat er software op de node geïnstalleerd moet worden om te kunnen communiceren met de master. Ansible maakt gebruik van agentless nodes waarbij de communicatie via secure shell (SSH) of Windows Remote Management (WinRM) verloopt. Agent- en agentless-communicatie zijn altijd versleuteld. Het voordeel van agentless nodes is dat er geen extra software op de nodes geïnstalleerd en onderhouden hoeft te worden en dat er geen extra poort in de firewall opengezet hoeft te worden.
Repositories
Modules zijn bouwstenen om een gewenste configuratie af te dwingen op een node. Bijvoorbeeld, een Linux-webserver bestaat uit een Linux, Apache, MySQL en PHP module met bepaalde instellingen per module. Deze modules kunnen zelf geprogrammeerd worden. Echter dit is veelal niet nodig omdat talrijke voorgeprogrammeerde modules beschikbaar zijn in de repositories van de producten. Bijvoorbeeld, Puppet heeft een Puppet Forge omgeving die op het ogenblik ruim 5.000 modules beschikbaar heeft die al dan niet gesupport worden door Puppet. Als je zelf een module maakt kan je deze veelal ook beschikbaar stellen voor anderen via de repository.
Wat kan SPS betekenen?
SPS biedt ondersteuning op het gebied van Puppet en Ansible. Dus heeft u een automation of configuration management vraagstuk, neem dan contact op met SPS.