Configuratie Management with SaltStack

Bij Hendrikx ITC gebruiken wij al meer dan 9 jaar SaltStack voor onze configuration management behoeften.

Bij Hendrikx ITC gebruiken wij al meer dan 9 jaar SaltStack voor onze configuration management behoeften.

Omdat SaltStack onlangs in het nieuws was vanwege een overname door VMWare, kreeg ik het idee om nog eens uit te leggen waarom het nuttig kan zijn om een configuratiebeheersysteem te gebruiken, en in het bijzonder SaltStack.

Wat Is Configuratie Management

Configuratiebeheer is een proces voor het verkrijgen en handhaven van consistentie tussen de beoogde en de werkelijke werking van een systeem gedurende de levensduur ervan. Dit houdt in dat er één configuratiebron is, die altijd als leidend voor het systeem wordt beschouwd (Single Source of Truth).

In de IT is in de meeste gevallen sprake van een hoge mate van automatisering, omdat dit kosteneffectief is en de kans op fouten verkleint.

Waarom Configuratie Management

Configuratiebeheer kan als onevenredig worden beschouwd wanneer u bijvoorbeeld slechts één server hoeft te beheren waarvan slechts een paar mensen afhankelijk zijn. Zodra er meer servers of systemen bij betrokken zijn en er meer mensen van afhankelijk zijn, wil je meer controle hebben over de configuratie van het systeem. Enkele concrete redenen:

De configuratie van een systeem moet reproduceerbaar zijn. Als hetzelfde systeem opnieuw moet worden opgezet, moet dus duidelijk worden aangegeven hoe dit moet gebeuren.

Als men wil zien wat de specifieke eigenschappen van een systeem zijn, moet men dat in één oogopslag kunnen doen. Dit is belangrijk voor bijvoorbeeld veiligheidscontroles. Om de oorzaak van storingen te achterhalen, is het zeer krachtig om het historische verloop van de configuratie te kunnen bekijken. Dit kan gemakkelijk worden bereikt door de configuratie vast te leggen en te beheren in een versiebeheersysteem

Waarom SaltStack

Voor al ons configuratiebeheer gebruiken we SaltStack in combinatie met Git voor versiebeheer. Wij hebben hiervoor gekozen na enkele jaren CFEngine te hebben gebruikt. De kenmerken van SaltStack die maken dat we er na 8 jaar nog steeds de voorkeur aan geven:

Open Source. Nu zijn veel van de populaire configuratiebeheersystemen open source, maar ik denk nog steeds dat het een belangrijke functie is.

Snelheid. Mede dankzij een efficiënt berichtenprotocol tussen de Salt-master en zijn zogenaamde minions is SaltStack zeer snel.

Schaalbaarheid. Omdat de Salt-minions het grootste deel van het werk doen, wordt het werk verdeeld en is het systeem dus zeer schaalbaar.

Leesbaarheid van de configuratie. Zoals met code het geval is, wordt de configuratie van een systeem vaker gelezen dan geschreven. Dan is het dus ook van groot belang dat het resultaat van de configuratiebeschrijving snel duidelijk is. Omdat ze voor SaltStack een op YAML gebaseerde, declaratieve taal hebben gekozen, is dit zeer prettig om te lezen.

Templating. Omdat SaltStack een elegante scheiding biedt tussen configuratiebeschrijving en configuratieparameters, samen met het gebruik van sjablonen, creëert het een zeer krachtig mechanisme voor het beschrijven van een systeem. Variaties van een configuratiebeschrijving kunnen dus met eenvoudige parameters worden uitgedrukt.

Hoe werkt SaltStack

IT Solutions Tilburg – saltstack blog

Een SaltStack-configuratie bestaat normaliter uit een Salt Master en een reeks agents Salt Minions die zijn geïnstalleerd op alle systemen die u wilt beheren. Nadat een Minion is geregistreerd bij de Master, wordt de Minion opgenomen in het configuratiebeheerproces. Alle configuratie die van toepassing is op het systeem waar de Minion op is geïnstalleerd zal worden toegepast wanneer het `highstate` commando aan de Minions wordt gegeven. Het highstate commando houdt in: Breng de aangegeven Minions in de beschreven staat. SaltStack zal na het uitvoeren van het commando rapporteren of het succesvol was, en wat de toegepaste wijzigingen zijn.

Zoals eerder vermeld, wordt de configuratie bepaald door een combinatie van “state” (configuratiebeschrijving in SaltStack-terminologie) en “pillar”-gegevens (een soort parameters in SaltStack-terminologie), die beide door de Master aan de Minion worden geleverd.

Via het Jinja templating mechanisme kunnen allerlei constructies worden gemaakt binnen de staat, gebruik makend van de pijlergegevens. Zo zijn bijvoorbeeld voorwaardelijke elementen mogelijk en lussen over lijsten van parameters (bv. gebruikers) uit de pijlergegevens.

Conclusie

Deze blog is niet de plaats om in te gaan op alle details van SaltStack, maar ik hoop dat mensen meer geneigd zullen zijn om te gaan kijken naar de

gebruik van configuratiebeheersystemen zoals SaltStack. Het geeft u immers een zeer duidelijk inzicht in de huidige toestand en de geschiedenis van uw systemen in allerlei situaties.