09-02-2018 / nieuws / Maarten van der Ster

Conclusion Best Practice TechUpdate: “Desired State Configuration Management”

Binnen Conclusion Mission Critical wordt gebruik gemaakt van Puppet. Puppet wordt ook wel een configuratie management tool genoemd. Voor organisaties zoals Conclusion Mission Critical is het belangrijk om gebruik te maken van een configuratie management tool.

 

Wat is configuratie management?
Met configuratie management beschrijven we een omgeving in code. Wat is er nodig om een dienst te kunnen draaien? Welke software moet er worden geïnstalleerd en welke configuratie heeft deze nodig? Van al deze componenten maken we ‘bouwblokken’, en bij het ontwerpen van een omgeving maken we gebruik van deze bouwblokken. De bouwblokken proberen we zo generiek mogelijk te maken, zodat deze toepasbaar zijn binnen meerdere klantomgevingen. Mocht een bouwblok nog niet bestaan, dan maken we daar een nieuwe code voor en voegen we deze als nieuw bruikbaar bouwblok toe aan het geheel. Puppet code is simpel en leesbaar.

 

Stel, we willen softwarepakket ‘cmc-blog’ installeren en automatisch laten opstarten, dan zou dit de volgende code kunnen opleveren:

 

 

 

 


package { 'cmc-blog':
 
      ensure => 'installed'

}

service { ‘cmc-blog’: 

      ensure => running, 

      enable => true

} 

 

Naast Puppet zijn er nog meer configuratie management tools, zoals Chef, CFengine en Ansible, maar op dit moment vinden we binnen Conclusion Mission Critical Puppet het beste voor ons werken.

 

Wat zijn de belangrijkste voordelen van het gebruik van een configuratie management tool?

  • Controleerbaarheid / beheersbaarheid:
    We beschrijven een omgeving in code en Puppet zorgt ervoor dat deze omgeving in die staat blijft. Mocht iemand in het Puppet voorbeeld hierboven het softwarepakket ‘cmc-blog’ met de hand verwijderen, dan zal Puppet deze weer opnieuw installeren. Dit dwingt om wijzigingen in de omgeving ook in code uit te voeren.
    Ook is het eenvoudig om wijzigingen over meerdere omgevingen uit te rollen. Stel, er wordt een omvangrijke lek ontdekt, dan kunnen er snel mitigerende maatregelen genomen worden door het bouwblok aan te passen.

  • De gehele omgeving is in code:
    Code is handelbaar. We kunnen het eenvoudig opslaan of back-uppen. Binnen Conclusion Mission Critical slaan we de code op in een versiebeheer tool, dit wil zeggen dat er een historie bijgehouden wordt van de code. We kunnen zien wie welke aanpassing gemaakt heeft, en wanneer dit is geweest.

  • Uniformiteit:
    Alle omgevingen worden op dezelfde wijze uitgerold. Binnen Conclusion Mission Critical hebben we een standaard opgesteld hoe een basis omgeving eruit moet zien. Dit maakt de omgeving voorspelbaar.

  • Snelheid om (nieuwe) omgevingen uit te rollen;
    Het is eenvoudig middels de code nieuwe omgevingen uit te rollen. Stel, we willen een testomgeving van een omgeving, dan kunnen we de bestaande code gebruiken om een omgeving uit te rollen die gelijk is aan de productie omgeving.
    Ook kunnen we de bouwblokken gebruiken om snel nieuwe omgevingen te ontwerpen. Dit versnelt de time-to-market om nieuwe klanten op te leveren.

  • Testbaarheid;
    Met de code kunnen we testen maken. In het bovenstaande Puppet voorbeeld installeren we het softwarepakket ‘cmc-blog’, en zorgen we ook dat deze automatisch start. Met software testen kijken of daadwerkelijk het softwarepakket ‘cmc-blog’ is geïnstalleerd, en dat deze ook draait. Is dit niet het geval, dan kan dit een fout in de code zijn.

 

Toekomst van configuratie management?

De trend is dat steeds meer in code ontworpen wordt. Het is bijvoorbeeld mogelijk om ook netwerk configuratie voor switches en routers te ontwerpen in code (dit wordt ‘software defined networking’ genoemd). Ook alle componenten in Cloud omgevingen als Amazon Webservices (AWS) en Microsoft Azure zijn in configuratie management als code te ontwerpen. Grote technologiebedrijven als Netflix en Facebook ontwerpen alle componenten in code. Binnen Conclusion Mission Critical houden we deze trends ook in de gaten en doen we zo veel mogelijk in code om de integriteit en uniformiteit te waarborgen.

 

 

Maarten van der Ster
Senior Mission Criticial Engineer

Maarten van der Ster
Senior Mission Critical Engineer