[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Clients identiek houden



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


Reply to: