20 April vond een meetup plaats vanuit de Dutch Puppet User Group community bij en door Itility in Eindhoven. Een mooi samengesteld programma met internationaal bekende Puppeteers als R.I Pienaar en Nicolas Corrarello, waarbij Puppet 4 centraal stond (features, orchestration, future roadmap).
Voor lezers die Puppet onvoldoende kennen, een korte recap. Puppet is een configuration management tool, die door middel van geautomatiseerde systeemconfiguratie servers beheert en consistent houdt. Dit wordt ook wel ‘desired state’ genoemd. Deze configuratie wordt elk half uur door de servers bij de centrale Puppet Master opgehaald waarna de settings steeds weer opnieuw op het systeem geforceerd worden.
De Dutch Puppet User Group-bijeenkomst kende een hoge opkomst, mede dankzij bekende internationale sprekers als R.I. Pienaar (ontwikkelaar van onder andere Puppet onderdelen Hiera en MCollective) en Nicolas Corrarello van PuppetLabs. Het programma was gericht op de vernieuwingen in Puppet 4 en roadmap voor 2016.
Nieuw in Puppet 4
Pienaar nam de groep mee in de nieuwe code features van Puppet 4. Ten opzichte van Puppet 3 is meer mogelijk vanuit de Puppet DSL. Zaken waar voorheen omheen gewerkt moest worden zijn nu native in de DSL opgenomen. Denk hierbij aan iteratie en data consistency checks voor parameters. Door nieuwe functies kan met minder code meer bereikt worden. Naast nieuwe code features is ook Facter compleet herschreven, met een duidelijke verbetering in performance als resultaat.
Puppet Application Orchestration
Oktober 2015 lanceerde Puppet Enterprise de zogeheten Application Orchestration. Maarten Bruntink besprak dit concept waarna Sidney Borrego y Diaz vervolgens in een demo liet zien hoe Application Orchestration in de praktijk werkt. Het concept is simpel: een applicatie bestaat meestal uit meerdere servers (bijvoorbeeld een database, web server en een loadbalancer). Het deployen en configureren van applicatieservers kent vaak een wenselijke volgorde of afhankelijkheid (voorbeeld: eerst moet de database up & running zijn voordat de web server hiermee gaat connecten). Deze volgorde kan met Puppet Application Orchestration worden gemanaged via het delen van informatie tussen de Puppet agents. Ook afhankelijkheden kunnen worden gemanaged (voorbeeld: na het opbrengen van een webserver krijgt de load balancer het ip-adres en poortnummer door om naar te forwarden). Application Orchestration maakt hiermee Puppet meer geschikt voor ‘infrastructure as code’.
Puppet 2016 en verder
Nicolas Corrarello lichtte een tipje van de sluier over Puppet 4 features. Hij ging onder meer in op cached catalogs. Deze feature is beschikbaar sinds Puppet 4 en zorgt voor een gecached versie van de catalog op de Puppet agent. De agent blijft deze nog steeds elke dertig minuten forceren naar het systeem, tot het moment dat de Puppet Master de agent aangeeft om een nieuwe op te halen. Dit introduceert de mogelijkheid om een configuratie change bijvoorbeeld eerst op één server te testen alvorens deze breed door te voeren. Een ander voordeel hiervan is dat de desired state ook blijft werken bij verlies van connectie met de Master. Na cached catalogs werden andere features besproken: token revocation en interactieve visualisaties in de Puppet Console om de afhankelijkheden tussen resources binnen een catalog in kaart te brengen (dependency chain). Op het vlak van integratie benoemde Corrarello verder de integratie met Splunk (ondere andere om de performance van de Puppet-server te monitoren) en Atlassian Hipchat (hiermee kunnen ontwikkelteams vanuit de chat omgeving met de Puppet-server praten).
Het laatste deel van Corrarello’s verhaal ging over de toekomstige ontwikkelingen waarbij hij sprak over een ‘World of possibilities’. Onderstaand derhalve geen formele aankondigingen, maar mogelijke ontwikkelingen. Een van die ontwikkelingen is ‘historic catalogs’: het terug kunnen zoeken en vergelijken van catalogs. Dit brengt niet alleen mogelijkheden in vergelijken van configuratie met het verleden, maar ook in het uitvoeren van een rollback. Een andere denkrichting voor de toekomst is ‘Pre-compiled catalogs’. De Puppet server kan efficiënter draaien als de catalogs die door agents opgehaald worden alvast klaargezet worden door ze te pre-compileren. Ook benadrukte Corrarello doorontwikkeling van Application Orchestration met bijvoorbeeld features om de node te kunnen deployen. Ook kwam Project Blueshift aan de orde waarin Puppet bijdraagt aan adoptie van nieuwe technologieën als Docker, Mesos en Google Kubernetes. Corrarello sloot af met een persoonlijk project. Na Hipchat werkt hij aan een integratie met Slack. Vanuit de zaal kwam een vraag of integratie met IRC ook nog op de planning stond. Corrarello gaf daarop een soort van persoonlijke commitment om als Slackbot klaar was naar een ‘old school’ internet relay channel (irc)-bot te gaan kijken. Grote kans dat op deze meetup-avond hiermee het zaadje is gepland voor irc-integratie.
Conclusie
Puppet en Puppet Enterprise ontwikkelen volop door (zowel door Puppet als door de community) wat steeds meer toegevoegde waarde geeft aan desired state configuration met Puppet. De nieuwe mogelijkheden van vandaag en het doorkijkje naar de toekomst bieden hierin veel vertrouwen.