Dag Paul, Disclaimer: ik werk als ICT system engineer en sta mee in voor het beheer van een aantal Linux systemen. Een aantal dat steeds blijft groeien. Momenteel zo'n 250. On Fri, 2015-01-09 at 12:25 +0100, Paul van der Vlis wrote: > Hoi allen, > > Ik beheer een aantal clients die eigenlijk identiek zijn, op een paar > uitzonderingen na zoals de hostname. Ik heb een backup van zo'n client > op de server. > > Om een client te installeren boot ik met een live-cd, partitioneer, > formatteer, download de data uit de backup, en installeer grub. Wellicht > kan dit handiger, maar dit werkt. > > Nu zit ik me af te vragen of zoiets ook later zou kunnen, dus om de > machines identiek te houden. Bijvoorbeeld vanaf de server iets van: > rsync -a --exclude=... --del /client pc01:/ > > Het lijkt me eigenlijk moeten kunnen, alleen komt die --exclude > natuurlijk wel vrij precies. en zijn er wellicht nog meer punten (zoals > de netwerk interfaces in udev, en het UUID van het filesystem moet > identiek zijn). > > Hebben jullie al eens met zo'n gedachte gespeeld of er zelfs ervaring mee? > > Uiteraard is het hele filesysteem via NFS ook een optie, maar dat maakt > b.v. het opstarten van een applicatie weer traag lijkt me. > Verder wordt het niet zo heel veel gebruikt en is het niet altijd > bruikbaar (bijvoorbeeld niet bij laptops). > > Ook iets als Puppet is een optie, maar dat lijkt me veel werk om goed > aan de praat te krijgen. Ik gebruik nu een eigen script, wat een ander > script download en uitvoert. > Zelf gebruik ik Puppet om systemen identiek te houden, of althans de delen van de systemen die me interesseren. Onze systemen zijn Red Hat, maar dat is perfect te vertalen naar Debian-based systemen. Wij gebruiken kickstart om een machine te installeren (virtueel of fysiek), in Debian zou dat 'preseeding' zijn. Een van de items in onze 'post-install' scripts (uitgevoerd via de automatische kickstart/preseed) gaat een puppet agent installeren en verbinden met de puppet master (2 dedicated machines achter een hardware load balancer). Als het moeilijk is om een aparte server te gebruiken voor de Puppet master (geen hardware ter beschikking, of geografisch te verspreid) kan je ook 'puppet apply' uitvoeren op de verschillende machines (via crontab bijvoorbeeld). Puppet (en enkele andere tools zoals chef, maar daar heb ik geen ervaring mee)zijn uitstekend geschikt voor configuration management zoals het beheren van users, packages, services, etc... Het identiek houden van files kan ook op een simpele manier (inclusief de attributen zoals permissions, owner, etc.), maar als dit er echt veel worden (hele directory trees) zal het Puppet erg vertragen tijdens een run. Hiervoor is iets als rsync beter voor geschikt. Het rsync-commando in een cronjob kan op zich dan weer perfect via puppet verspreid worden naar de systemen. Mijn raad voor Puppet is vooral: begin klein. Je moet niet meteen proberen om alles in Puppet te zetten, dat is meer iets voor de langere termijn als je bestaande systemen hebt. De eerste dingen die je doet zijn 'low hanging fruit', de makkelijke dingen waar je normaal zelf het meeste tijd insteekt. Ook nieuwe dingen zet je in Puppet, bestaande items kan je langzaam toevoegen. Puppet beheert de zaken die je wil, al de andere dingen worden niet aangeraakt. Een 2de tip voor Puppet is: denk in het begin niet aan hoe je iets in Puppet zal zetten, maar hoe het er op de machine moet uitzien, dan pas zet je dat in Puppet, niet omgekeerd. Succes! Regards, Steven
Attachment:
signature.asc
Description: This is a digitally signed message part