Heb je meer dan een handvol servers te configureren, dan is het lastig om dat handmatig te blijven doen. Een configuratiebeheertool kan je hierbij helpen: je definieert de configuratie van elk systeem in policy's en laat de tool die policy's toepassen. Op elke machine draait een client die de policy's van een server haalt. Door dit te automatiseren zorg je ervoor dat al je machines zich in een consistente toestand bevinden. Bekende configuratiebeheertools voor Linux zijn Cfengine, Puppet en Chef.

Wildgroei van machines

CVIS (Customer Value ICT Solutions) uit Boxtel beheert kleinere en grotere IT-omgevingen voor zijn klanten. Solution Architect/Consultant Ed Voncken legt uit dat het steeds belangrijker wordt om de configuratie hiervan te automatiseren: "Wij werken in omgevingen die tientallen tot honderden machines hebben, onder andere door gebruik van virtualisatie. Elke machine handmatig configureren is niet meer van deze tijd, en daarom zijn we enkele jaren geleden begonnen met shell scripts om de configuratie van Linux- en UNIX-machines onder ons beheer te automatiseren. Later hebben we gekozen voor de configuratiebeheertool Cfengine, eerst versie 2 en vorig jaar versie 3."

Voncken ontkracht met klem de vaak gehoorde kritiek dat configuratiebeheer alleen voor grote bedrijven of HPC-clusters de moeite waard is: "Uiteraard is er een ondergrens van het aantal machines waarbij het interessant wordt om configuratiebeheer in te zetten, maar ook bij kleinere bedrijven groeit IT steeds meer. Fysieke machines gaan vaak meerdere virtuele machines draaien, waardoor je in de praktijk ook in het MKB een wildgroei van machines ziet. En als je dan handmatig op elke machine gaat inloggen en instellingen aanpassen, krijg je mettertijd een wildgroei van configuraties: je vergeet toch altijd op die ene machine een instelling aan te passen, en dat is niet goed voor de stabiliteit van je IT-omgeving: plots blijkt dan op die ene machine iets niet te werken en moet je onder tijdsdruk uitzoeken waarom."

Cultuurschok

Volgens Voncken vereist het gebruik van een configuratiebeheersysteem wel een abstractere kijk op systeembeheer, en dit is niet direct in elk bedrijf te introduceren: "De organisatie moet er aan toe zijn, zowel het bedrijf zelf als de IT-afdeling. De beheerders moeten afleren om zelf in te loggen op de machines en moeten in de plaats toestanden van machines definiëren, wat een abstractere manier van werken is, veel tijd kost om je in te werken en ook heel wat discipline kost. Als je immers eenmaal gebruik maakt van een configuratiebeheersysteem, maar dan als het erop aankomt toch nog handmatig wijzigingen gaat maken, loopt het natuurlijk mis."

Het hele concept van configuratiebeheer kan dus voor een grote cultuurschok zorgen, zodat er volgens Voncken in de praktijk relatief veel tijd gaat zitten in de overstap: "Zo zie ik bij kleinere klanten die met Windows werken dat men daar echt gewend is om configuraties even handmatig aan te passen door je door wat vensters heen te klikken. Onder Linux is men al langer gewend aan het automatiseren van beheer, omdat shell scripts en configuratiebestanden daar meer in trek zijn dan grafische interfaces. Daarom zien we voorlopig dat configuratiebeheer vooral gebruikelijk is in Linux-omgevingen, alhoewel Cfengine ook Windows ondersteunt."

Tips

Om de introductie van zo'n nieuwe aanpak tot een goed einde te brengen, is het belangrijk dat systeembeheerders met interesse in configuratiebeheer een groeipad volgen. Ze kunnen bijvoorbeeld het beste eerst zelf hun configuraties scripten en in een versiebeheersysteem steken, waarna ze de stap naar een abstractere tool zoals Cfengine of Puppet kunnen nemen. En ook die stap kan maar beter niet al te bruusk gebeuren, aldus Voncken: "Zeker bij Cfengine raad ik omwille van de steile leercurve aan om eenvoudig te beginnen. Zodra je meer ervaring hebt opgedaan, kun je complexere policy's maken."

Wie configuratiebeheer op de juiste manier wil aanpakken, combineert dit ook met een versiebeheersysteem, iets dat meer bij softwareontwikkelaars in gebruikelijk is: "Als je je configuratie in de vorm van bijvoorbeeld Cfengine-policybestanden in een versiebeheersysteem steekt, dan kun je op elk moment als er een fout gebeurt terugkeren naar een vroegere configuratie, waarvan je weet dat die werkte. Het is heel belangrijk om de geschiedenis van al je aanpassingen zo bij te houden: waar je vroeger een papieren logboek bijhield, doe je dat nu met een versiebeheersysteem."

Overhead

Bij CVIS gebruikt men Cfengine, maar Voncken zegt dat de bekendste systemen technisch wel aan elkaar gewaagd zijn en elk hun voor- en nadelen hebben: "Wij hebben begin 2010 zelf Cfengine en Puppet geëvalueerd, en hoewel Puppet laagdrempeliger is en je er gemakkelijker mee kunt beginnen, hebben we voor Cfengine gekozen omdat het zuiniger is met resources. Vooral in een gevirtualiseerde omgeving is de resource-impact heel belangrijk: heb je bijvoorbeeld tien virtuele machines met een configuratiebeheerclient die een overhead van 10% heeft, dan verspil je in totaal een volledige virtuele machine met die overhead." De overhead is natuurlijk afhankelijk van de complexiteit van de policy's, maar uit een vergelijking uit februari 2010 blijkt inderdaad dat Cfengine in bepaalde scenario's 20 tot 40 keer efficiënter is dan Puppet. "Bij onze evaluatie was vooral het verschil aan de serverkant groot: vanaf 10 clients hadden we toch al een stevige Puppet-server nodig," merkt Voncken op.

Toekomst

Voncken ziet heel wat heil in de kruisbestuiving tussen cloud computing een configuratiebeheer: "De belangrijkste eigenschap van cloud computing is dat je hele infrastructuur programmatisch aangestuurd wordt via een API. En feitelijk doe je met configuratiebeheer hetzelfde, dus ik verwacht dat beide domeinen naar elkaar toe zullen groeien. Ik zie nu al meer en meer dat men bijvoorbeeld via een Python-script een virtuele machine definieert en opstart en de rest van de configuratie dan met Puppet toepast. Ik verwacht dan ook dat men in de systeembeheerwereld veel ideeën voor de automatisering van beheer gaat lenen uit de cloud computing wereld, onder andere door de inzet van tools zoals Cfengine en Puppet."