Il sistemista moderno, quello che chiamiamo sistemista 2.0, ha strumenti e necessità ben diversi da quelli che aveva alcuni anni fa. Cloud computing, virtualizzazione, crescita esponenziale dei sistemi da gestire e tempi sempre più ristretti rendono necessaria una gestiore della propria infrastruttura in cui i meccanismi di automazione siano molto più spinti che in passato.
Uno degli strumenti più potenti e innovativi per il sistemista 2.0 è Puppet.
Ho incontrato Puppet circa 3 anni fa ed è stata una rivelazione. Da quel momento per la mia attività sistemistica è iniziata una vera e propria rivoluzione.
Strettamente parlando Puppet non fa qualcosa di nuovo, esistevano già da prima software analoghi come cfengine e altri prodotti commerciali per la gestione automatizzata dei sistemi.
Un elemento distintivo di Puppet è però la sua estrema flessibilità, la relativa facilità di implementazione e l'enorme adattabilità a contesti e infrastrutture diverse.
Chi usa Puppet di fatto "programma" la sua infrastruttura IT, si parla di linguaggio Puppet (un DSL dichiarativo semplice ma con logiche da comprendere), di codice, quindi, e di versioning dello stesso con un approccio che avvicina il sistemista ad uno sviluppatore (di qui, anche, il neologismo DevOps).
Non è detto che Puppet serva a tutti e che il tempo necessario per conoscerlo ed utilizzarlo dia dei vantaggi evidenti rispetto ad una gestione manuale dei sistemi.
Ma, se si deve gestire un parco macchine non piccolissmo (diciamo dai 20 host in su), se si ha la necessità di installare sistemi simili con una certa frequenza, se si devono tenere allineate le configurazioni su un numero consistente di macchine, uno strumento come Puppet fa risparmiare una quantità di tempo notevole per la gestione ordinaria e il provisioning dei sistemi.
I vantaggi non si riducono a questo, però, con Puppet si è certi della integrità e riproducibilità di un setup (dimenticatevi quei server troppo vecchi o poco conosciuti per poter essere aggiornati o reinstallati), si ha una traccia certa degli interventi sulla produzione (chi, quando e perchè) e un sistema centralizzato in cui è versionato il codice di Puppet che disegna l'intera infrastruttura.
Questo di fatto comporta una gestione del passaggio in produzione più formale e controllato (certamente meno comodo di rapidi interventi manuali) e una migliore condivisione delle informazioni fra il team di sistemisti e verso l'esterno.
Si ha inoltre la possibilità di avere ambienti diversi perfettamente allineati (sviluppo, collaudo, produzione) e coerenti, oltre ad avere gli strumenti per ricostruire l'intera infrastruttura in tempi stretti o disegnarne un'altra velocemente partendo da basi consolidate.