|
|
Publicerad på 2014-10-20 09:47:45
|
|
|

1. Introduktion till Puppet
Systemadministratörer fastnar ofta i en serie repetitiva uppgifter: uppgradera paket, hantera konfigurationsfiler, systemtjänster, cron-uppgifter, lägga till nya konfigurationer, fixa buggar, etc. Dessa uppgifter är ofta repetitiva och ineffektiva, och det första svaret på att lösa dem är att automatisera dem, så att anpassade skript dyker upp. På grund av miljöns komplexitet utvecklas anpassade skript och applikationer upprepade gånger och det är svårt att passa flera plattformar, och flexibilitet och funktionalitet är svåra att garantera, så automatiserade konfigurationshanteringsverktyg som Puppet har dykt upp.
I den öppna källkodsvärlden finns det många konfigurationsverktyg att välja mellan, och några av nyckelprodukterna inom detta område är:
Puppet (http://puppet.reductivelabs.com/): Ett konfigurationshanteringsverktyg skrivet i Ruby som använder C/S-arkitekturen för att konfigurera klienten i deklarativt språk. Cfengine (http://www.cfengine.org): Ett av de första open source-konfigurationsverktygen som släpptes, släppt 1993, det är också en C/S-arkitektur, vanligtvis använd i utbildningsinstitutioner. LCFG(http://www.lcfg.org/): Ett konfigurationshanteringsverktyg för C/S-arkitekturer som använder XML för att definiera konfigurationer. Bcfg2: Ett konfigurationshanteringsverktyg för C/S-arkitektur skrivet i Python som använder specifikationer och klientsvar för att konfigurera målvärden.
Detta dokument är tillägnat att beskriva hur du använder Puppet för att hantera din värd, applikationer, bakgrundsprogram och olika tjänster.
Om Puppet:
1. Vad används Puppet till?
Puppet är ett öppen källkodsverktyg för systemkonfigurationshantering baserat på Ruby som bygger på C/S-distributionsarkitekturen. Huvudutvecklaren är Luke Kanies, som följer GPLv2-upphovsrättslicensen. Sedan 1997 har Kanies varit involverad i UNIX-systemadministration, och utvecklingen av Puppet har sitt ursprung i denna erfarenhet. Inte nöjda med de konfigurationsverktyg som fanns tillgängliga började Kanies utveckla verktyg i Reductive-labbet mellan 2001 och 2005. Snart släppte Reductive Labs sin flaggskeppsprodukt, Puppet.
2. Egenskaper hos Pupput
Många systemkonfigurationshanteringsverktyg fungerar mycket liknande, såsom cfengine. Vad gör Puppet unik?
Puppets syntax låter dig skapa ett separat skript för att bygga en användare på alla dina målvärdar. Alla målvärdar kommer att tolka och köra modulen i tur och ordning med hjälp av syntaxen som gäller för det lokala systemet. Till exempel, om denna konfiguration körs på en Red Hat-server, skapa en användare med kommandot useradd; Om denna konfiguration körs på en FreeBSD-värd används adduser-kommandot.
En annan anmärkningsvärd aspekt av Puppet är dess flexibilitet. På grund av öppen källkod kan du fritt få tillgång till källkoden till Puppet, och om du stöter på problem och har möjlighet kan du modifiera eller förbättra koden i Puppet för att passa din miljö. Dessutom fortsätter samhällsutvecklare och givare att förbättra Puppets kapacitet. En stor gemenskap av utvecklare och användare är också engagerade i att tillhandahålla dokumentation och tekniskt stöd för Puppet.
Puppet är också lätt att skala. Stöd för anpassade paket och särskilda systemmiljökonfigurationer kan snabbt och enkelt läggas till i Puppet-installationsprogrammet.
3. Dockans arbetsläge
Puppet är ett konfigurationshanteringsverktyg för C/S-arkitektur som installerar puppet-server-paketet (känt som Puppet master) på en central server. Installera Puppet-klientprogramvaran (kallad Puppet Client) på målvärden som behöver hanteras. När klienten ansluter till Puppet master kompileras konfigurationsfilen som definieras på Puppet master och körs sedan på klienten. Som standard kommunicerar varje klient med servern var trettionde minut för att bekräfta uppdateringen av konfigurationsinformationen. Om det finns ny konfigurationsinformation eller om konfigurationsinformation har ändrats, kommer konfigurationen att kompileras om och publiceras till varje klient för exekvering. Du kan också aktivt trigga en uppdatering av konfigurationsinformationen på servern för att tvinga varje klient att konfigurera den. Om klientens konfigurationsinformation ändras kan den hämta den ursprungliga konfigurationen från servern för att korrigera den.
Konfigurationshantering: Dockinstallation och användning (1)
4. Dockans framtid
Slutligen är Puppet ett ungt verktyg som fortfarande är under utveckling och utveckling. Dockgemenskapen växer snabbt och många nya idéer införlivas ständigt, vilket leder till utveckling, uppdateringar och moduler som presenteras varje dag.
2. Konfiguration och installation (Puppet 2.6.4 CentOS 5.4-installation):
Konfigurera arkivet på dockservern och klienten: varvtal -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm [root@puppetmaster ~]# vi /etc/yum.repos.d/epel.repo Lägg till i: [epel-docka] Namn=Epel Docka baseurl=http://tmz.fedorapeople.org/repo/puppet/epel/5/$basearch/ aktiverad=0 gpgcheck=0
Lägg till arkivet puppet.repo: [root@puppetmaster ~]# vi /etc/yum.repos.d/puppet.repo [docklaboratorier] name=Puppet Labs-paket baseurl=http://yum.puppetlabs.com/base/ aktiverad=0 gpgcheck=0
Dockmästarinstallation: [root@puppetmaster ~]# yum --enablerepo=epel,epel-puppet install puppet-server
Modifiera värdar och lägg till följande två poster: [root@puppetmaster ~]# vi /etc/hosts 192.168.0.10 puppetmaster.leju.com docka 192.168.0.100 puppetclient.leju.com
Konfigurera Puppet: [root@puppetmaster ~]# cd /etc/puppet/ [root@puppetmaster docka]# vi docka.conf
[huvud] # Dockloggkatalogen. # Standardvärdet är '$vardir/log'. logdir = /var/log/puppet
# Där Puppet PID-filer förvaras. # Standardvärdet är '$vardir/run'. rundir = /var/run/puppet
# Där SSL-certifikat förvaras. # Standardvärdet är '$confdir/ssl'. ssldir = $vardir/SSL
[agent] # Filen där Puppetd lagrar en lista över klasser # kopplad till den återfunna konfigurationen. Kan laddas in # den separata ''puppet''-exekverbara filen med hjälp av ''--loadclasses'' # Alternativ. # Standardvärdet är '$confdir/classes.txt'. classfile = $vardir/classes.txt
# Där puppetd cachar den lokala konfigurationen. En #-tillägget som anger cacheformatet läggs automatiskt till. # Standardvärdet är '$confdir/localconfig'. localconfig = $vardir/localconfig server = puppetmaster.leju.com Rapport = Sant lyssna = sant
[mästare] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY Autosign = sant Rapporter = butik
[root@puppetmaster docka]# vi fileserver.conf [filer] path /etc/puppet/files tillåt *
[moduler] tillåt *
[plugins] tillåt *
[root@puppetmaster docka]# mkdir /etc/docka/filer
[root@puppetmaster docka]# CD-manifest/ Create site.pp, som är konfigurationsfilen för dockposten: [root@puppetmaster manifesterar]# vi site.pp importera "modules.pp" Importera "roles.pp" importera "nodes.pp"
# Allmänna inställningar för standardtyper Exec { path => "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" }
filebucket { main: server => "puppetmaster.leju.com" } Fil { backup => main }
Skapa modules.pp för att importera moduler: [root@puppetmaster manifesterar]# vi moduler.pp import "test"
Skapa roles.pp för att definiera serverroller: [root@puppetmaster manifesterar]# vi roller.pp Klassbasklass { Inkludera test
}
Skapa nodes.pp för att konfigurera servernoderna: [root@puppetmaster manifesterar]# vi noder.pp nod 'basenode' { Inkludera baseclass
}
Noden 'puppetclient.leju.com' ärver basenode { tagg("test")
}
Noden 'puppetmaster.leju.com' ärver basenod { tagg("test")
}
[root@puppetmaster manifesterar]# CD .. [root@puppetmaster docka]# mkdir-moduler Skapa en testmodul: [root@puppetmaster moduler]# mkdir -p test/manifests/ [root@puppetmaster moduler]# mkdir test/filer/ [root@puppetmaster moduler]# CD-test/filer/ [root@puppetmaster filer]# vi test.txt Testlinje! [root@puppetmaster filer]# CD .. /manifest/ Skapa en testklass för att leverera en fil till klienten: [root@puppetmaster manifesterar]# vi init.pp Klasstest { fil { "/tmp/test.txt": ensure => nu, grupp => "rot", ägare => "rot", mode => "0644", källa => "puppet:///test/test.txt" }
}
Att starta Puppet Master: [root@puppetmaster manifesterar]# /etc/init.d/puppetmaster start Se till att port 8140 är uppe.
Installation av dockklient: [root@puppetclient ~]# mum --enablerepo="epel,epel-puppet" installera docka
Modifiera värdar och lägg till följande två poster: [root@puppetclient ~]# vi /etc/hosts 192.168.0.10 puppetmaster.leju.com docka 192.168.0.100 puppetclient.leju.com
Konfigurera dockan: [root@puppetclient ~]# CD /etc/Puppet/ [root@puppetclient docka]# vi docka.conf [huvud] # Dockloggkatalogen. # Standardvärdet är '$vardir/log'. logdir = /var/log/puppet
# Där Puppet PID-filer förvaras. # Standardvärdet är '$vardir/run'. rundir = /var/run/puppet
# Där SSL-certifikat förvaras. # Standardvärdet är '$confdir/ssl'. ssldir = $vardir/SSL
[agent] # Filen där Puppetd lagrar en lista över klasser # kopplad till den återfunna konfigurationen. Kan laddas in # den separata ''puppet''-exekverbara filen med hjälp av ''--loadclasses'' # Alternativ. # Standardvärdet är '$confdir/classes.txt'. classfile = $vardir/classes.txt
# Där puppetd cachar den lokala konfigurationen. En #-tillägget som anger cacheformatet läggs automatiskt till. # Standardvärdet är '$confdir/localconfig'. localconfig = $vardir/localconfig
server = puppetmaster.leju.com Rapport = Sant lyssna = sant
[root@puppetclient docka]# vi namespaceauth.conf [docklöpare] tillåt puppetmaster.leju.com tillåt *.leju.com
[root@puppetclient docka]# vi auth.conf Lägg till allow * på sista raden ...... Väg / godkänn någon tillåt *
[root@puppetclient docka]# CD Utför dockan: [root@puppetclient ~]# docka --nej --test --trace --debug Om Puppet Master inte sätter autosign=true måste det utföras i Puppet Master: [root@puppetmaster ~]# dockcertifikat -l puppetclient.leju.com [root@puppetmaster ~]# dockcertifikat -s puppetclient.leju.com Signera puppetclient.leju.com så här. Gå sedan tillbaka till klienten för att köra här: [root@puppetclient ~]# docka --nej --test --trace --debug Join --noop, konfigurationen kommer egentligen inte att tillämpas på klienten, utan används främst för testning för att se om det finns några fel i utskriften, och kör utan fel: [root@puppetclient ~]# puppetd --test --trace --debug
Se dokumentet: [root@puppetclient ~]# ll /tmp/ totalt 8 -rw-r--r-- 1 rotrot 11 feb 25 22:35 test.txt Dokumentet har utfärdats.
Det är också möjligt att trycka på Puppet Master: [root@puppetmaster ~]# dockspark -d --värd puppetclient.leju.com Att trigga puppetclient.leju.com Att få status Status är framgång puppetclient.leju.com avslutade med utgångskod 0 Färdigt Att returnera 0 indikerar att puppetd på klienten aktiverades framgångsrikt.
Ställ in dockan på att starta autostart: chkconfig --nivå 2345 docka på
Modifiera dockmästaren för att använda Passagerare Passenger är en utvidgning av Apache 2.x för att köra räls- eller kuggväxelapplikationer i Apache. puppetmaster använder WEBrick som standard för att tillhandahålla filtjänster, om du har många puppet-klienter kommer puppetmasters filtjänstprestanda att vara dålig för att göra puppetmaster mer robust, så använd Apache för att tillhandahålla filtjänster.
Installation: [root@puppetmaster ~]# yum install httpd httpd-devel ruby-devel rubygems Passenger 2.2.2 RHEL5 fungerar bra. Lägg till foreman.repo repository: [root@puppetmaster ~]# vi /etc/yum.repos.d/foreman.repo [förman] name=Foreman stabilt arkiv baseurl=http://yum.theforeman.org/stable gpgcheck=0 enabled=1 [root@puppetmaster ~]# Yum installera Rubygem-Passenger-2.2.2-1 [root@puppetmaster ~]# rubygem-rack-1.0.1-1 [root@puppetmaster ~]# passenger-install-apache2-module
Installation av Apache SSL-modulen: [root@puppetmaster ~]# mums installera mod_ssl
För att konfigurera Puppet-rackapplikationen: mkdir -p /etc/puppet/rack/puppetmasterd/ mkdir /etc/puppet/rack/puppetmasterd/public /etc/puppet/rack/puppetmasterd/tmp cp /usr/share/puppet/ext/rack/files/apache2.conf /etc/httpd/conf.d/puppetmasterd.conf cp /usr/share/puppet/ext/rack/files/config.ru /etc/puppet/rack/puppetmasterd/ chown puppet /etc/puppet/rack/puppetmasterd/config.ru
[root@puppetmaster ~]# vi /etc/httpd/conf.d/passenger.conf LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.2/ext/apache2/mod_passenger.so PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.2 PassagerarRuby /usr/bin/ruby PassagerarMaxPoolStorlek 30 PassagerarpoolIdleTime 1500 PassagerarMaxBegär 1000 PassagerarStatThrottleRate 120 RackAutoDetect avstängd RailsAutoDetect Av
[root@puppetmaster ~]# vi /etc/httpd/conf.d/puppetmasterd.conf # du vill nog ställa in dessa inställningar Passagerarhögprestanda på PassagerarMaxPoolStorlek 12 PassagerarpoolIdleTime 1500 # PassagerarMaxFörfrågningar 1000 PassagerarStatThrottleRate 120 RackAutoDetect avstängd RailsAutoDetect Av
Lyssna 8140
<VirtualHost *:8140> SSLEngine på SSLProtocol -ALL +SSLv3 +TLSv1 SSLCipherSuite ALLA:! ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP
SSLCertificateFile /var/lib/puppet/ssl/certs/puppetmaster.leju.com.pem SSLCertificateKeyFile /var/lib/puppet/ssl/private_keys/puppetmaster.leju.com.pem SSLCertificateChainFile /var/lib/puppet/ssl/ca/ca_crt.pem SSLCACertificateFile /var/lib/puppet/ssl/ca/ca_crt.pem # Om Apache klagar på ogiltiga signaturer på CRL kan du prova att inaktivera # CRL kontrollerar genom att kommentera nästa rad, men detta rekommenderas inte. SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem SSLVerifyClient valfritt SSLVerifyDepth 1 SSLOptions +StdEnvVars
# Följande klienthuvuden tillåter samma konfiguration att fungera med Pound. RequestHeader set X-SSL-Subject %{SSL_CLIENT_S_DN}e RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e RequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e
DocumentRoot /etc/puppet/rack/puppetmasterd/public/ RackBaseURI / <Katalog /etc/puppet/rack/puppetmasterd/> Alternativ Ingen Tillåt Överstyr Ingen Order tillåt, neka tillåt från alla </Directory> </VirtualHost>
Ändra puppetmaster-konfigurationsfilen för att lägga till följande två rader: [root@puppetmaster ~]# vi /etc/puppet/puppet.conf [mästare] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY
Modifiera /etc/sysconfig/puppetmaster: [root@puppetmaster ~]# vi /etc/sysconfig/puppetmaster # Lägg till följande rad i slutet: PUPPETMASTER_EXTRA_OPTS="--rapporterar butik" Om du behöver rapportera till både förmannen och dockinstrumentpanelen, lägg till följande rad: PUPPETMASTER_EXTRA_OPTS="--rapporterar butik, arbetsledare, puppet_dashboard"
Stoppa dockmästartjänsten och starta apache-tjänsten: [root@puppetmaster ~]# /etc/init.d/puppetmaster stopp [root@puppetmaster ~]# /etc/init.d/httpd start
Boot startar inte puppetmaster-tjänsten, boot startar httpd-tjänsten: [root@puppetmaster ~]# chkconfig --nivå 2345 Puppetmaster av [root@puppetmaster ~]# chkconfig --level 2345 httpd on
Se till att port 8140 är aktiverad: [root@puppetmaster ~]# netstat -tunlp |grep 8140 tcp 0 0 :::8140 :::* LYSSNA 9834/httpd
Testa på klientsidan om felloggen är utskriven: [root@puppetclient ~]# puppetd --test --trace --debug |
Föregående:php-fpm.conf Viktiga parametrar förklaras i detaljNästa:Den 25 oktober 2014 (lördag), klockan 16.00, testades luftförsvars- och katastrofförebyggande larmet
|