[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: [enterprise] Hvad er jeres erfaringer med puppet eller ligene systemer



Hej Finn

Jeg har kørt med Puppet i de sidste to år, på ca. 50-100 servere, og jeg kan helt klart anbefale det. Igennem de sidste 10 år har jeg testet en del af de systemer, som du nævnte, og forelskede mig tidligt i cfengine. Men jeg fik det aldrig kørt i produktion, fordi jeg hele tiden stødte ind i begrænsninger (selv i mit lille test-setup), som gjorde at jeg måtte lave kringlede opsætninger for at kunne løse det med cfengine.

Da jeg for 2 år siden faldt over Puppet, gik der ca. en uge fra min første test, til at Puppet var i produktion på en håndfuld servere.

Det jeg virkelig godt kan lide ved Puppet, er den måde hvorpå man angiver dependencies:

package { "foo"

service { "foo":
	ensure		=> running,
	enable		=> true,
	subscribe	=> File["/etc/foo/foo.conf"],
	require		=> Package["foo"],
}

file { "/etc/foo/foo.conf":
	content		=> template("foo.conf"),
}

Det subscribe statement der er angivet i definitionen af foo servicen gør, at foo genstarter hvis config filen bliver ændret. På den måde kan man definere afhængigheder og rækkefølgen af hændelser. Ved første Puppet run:

1. installer foo pakken
2. Opdater foo.conf fra template
3. Sørg for at service foo er enabled og startet

Ved efterfølgende runs:

1. Check at foo.conf template er ændret og generer ny foo.conf i så tilfælde
2. Overfør ny foo.conf
3. Genstart service foo

Puppet benytter også templatesystemet, ERB som kan bruges til alle typer config filer. Man kan også vælge at kopiere statiske filer over i stedet for at generere config filer fra templates. Det er også væsentlig nemmere at udvide Puppet, da det er skrevet i Ruby og ikke i C som cfengine.

Mht. dine konkrete spørgsmål, så har jeg valgt at håndtere sikkehedsopdateringer ved at kommandoen /usr/bin/apt-get --assume-yes --fix-broken -qq upgrade bliver kørt, når jeg opdaterer en changelog fil i /etc. Jeg har desuden begrænset tidsrummet hvor denne kommando må køre, så jeg kan holde øje med serverne når det sker. Denne metode gør også, at man kan se på hver server, hvilke sikkerhedsopdateringer der er installeret.

Mht. debconf problematikken, understøtter puppets package provider at du stikker apt/debconf en preseed fil ved installationen:

package { "sun-${javaversion}-jre":
	ensure		=> installed,
responsefile => "/var/cache/local/preseeding/sun-${javaversion}- jre.seeds", require => File["/var/cache/local/preseeding/sun-${javaversion}- jre.seeds"].
}

Du skal så bare sørge for at preseed filen bliver kopieret over fra Puppet serveren:

file { "/var/local/cache/preseeding/sun-${javaversion}-jre.seeds":
	ensure	    => "file",
source => "puppet://$server/files/preseeds/sun-${javaversion}- jre.seeds",
}

Jeg kan helt klart anbefale Puppet...


On Apr 2, 2009, at 09:40 , Finn Dorph-Petersen wrote:

Jeg har kigget rundt på forskellige config management systemer og har fået
en lille puppet test op og køre.

Har I nogle erfaringer med puppet, lcfg eller cfengine og er der nogle
faldgruber som det er godt kende til inden jeg prøver med rigtige server.

Kort om hvad jeg regner med at bruge det til.
Idag køre vi en del server virtualiseret under xen og vmware så de har
allerede et standard image og vi prøvet så vidt det er muligt at følge de retningslinjer der er fra debian med hensyn til konfiguration og pladsering af tingene. Men der er efterhånden tilpas mange server til at det begynder
at blive besværligt og her snakker vi om knap 90 server.

Der er 2 ting som er særlige interressante at få løst ved hjælp af puppet.

1) Sikkerehedsopdateringer, idag så bruger jeg et hjemmelavet perl script og ssh/kerberos magi, men det funger ikke når debconf startet ncurses for at
sprøge om du vil reload 5 services eller du bør reboot efter at havde
opgradet den nuværende kerne. Jeg kan godt scripte det til at lade være med at komme med ncurses men beskederne er relevante da der skal gøres noget
efter opdateringen er afsluttet.
Puppet kan selv installer pakker men er det også muligt at få den til
håndtere sikkerheds opgraderinger.

2) Rulle services ud på en server, ala. installer apache med php og oracle support samt lav de relevante konfigurationer. Det burde være lige ud af
landevejen.

Hvis du har nogle ting/holdninger omkring config mangement så vil jeg gerne
høre dem :)

Mvh Finn Dorph-Petersen


--
Med venlig hilsen/Best regards
Juri Rischel Jensen

Fab:IT ApS
Vesterbrogade 50
DK-1620 København
Tlf: +45 70 202 407
www.fab-it.dk



 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2009-05-01, 02:01 CEST [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *