|
|
Geplaatst op 20-10-2014 09:47:45
|
|
|

1. Introductie tot Puppet
Systeembeheerders zitten vaak vast in een reeks repetitieve taken: pakketten upgraden, configuratiebestanden beheren, systeemservices, cron-taken, nieuwe configuraties toevoegen, bugs oplossen, enzovoort. Deze taken zijn vaak repetitief en inefficiënt, en de eerste reactie op het oplossen is ze automatiseren, zodat aangepaste scripts verschijnen. Door de complexiteit van de omgeving worden aangepaste scripts en applicaties herhaaldelijk ontwikkeld en is het moeilijk om meerdere platforms te passen, en flexibiliteit en functionaliteit zijn moeilijk te garanderen, waardoor geautomatiseerde configuratiebeheertools zoals Puppet zijn ontstaan.
In de open source wereld zijn er veel configuratietools om uit te kiezen, en enkele van de belangrijkste producten in deze sector zijn:
Puppet (http://puppet.reductivelabs.com/): Een configuratiebeheertool geschreven in Ruby die de C/S-architectuur gebruikt om de client in declaratieve taal te configureren. Cfengine (http://www.cfengine.org): Een van de eerste open source configuratietools die werden uitgebracht, uitgebracht in 1993, het is ook een C/S-architectuur, meestal gebruikt in onderwijsinstellingen. LCFG(http://www.lcfg.org/): Een configuratiebeheertool voor C/S-architecturen die XML gebruikt om configuraties te definiëren. Bcfg2: Een configuratiebeheertool voor C/S-architectuur, geschreven in Python, die specificaties en clientantwoorden gebruikt om de doelhost te configureren.
Dit document is gewijd aan het beschrijven van hoe je Puppet kunt gebruiken om je host, applicaties, achtergrondprogramma's en diverse diensten te beheren.
Over Puppet:
1. Waar wordt Puppet voor gebruikt?
Puppet is een open-source Ruby-gebaseerde systeemconfiguratiebeheertool die vertrouwt op de C/S-implementatiearchitectuur. De hoofdontwikkelaar is Luke Kanies, die de GPLv2-auteursrechtlicentie volgt. Sinds 1997 is Kanies betrokken bij UNIX-systeembeheer, en de ontwikkeling van Puppet is voortgekomen uit deze ervaring. Niet tevreden met de beschikbare configuratietools, begon Kanies tussen 2001 en 2005 met het ontwikkelen van tools in het Reductieve lab. Al snel bracht Reductive Labs hun vlaggenschipproduct Puppet uit.
2. Kenmerken van Pupput
Veel systeemconfiguratiebeheertools werken zeer vergelijkbaar, zoals cfengine. Wat maakt Puppet uniek?
De syntaxis van Puppet stelt je in staat een apart script te maken om een gebruiker op al je doelhosts te bouwen. Alle doelhosts zullen de module op hun beurt interpreteren en uitvoeren met behulp van de syntaxis die toepasbaar is op het lokale systeem. Als deze configuratie bijvoorbeeld op een Red Hat-server wordt uitgevoerd, maak dan een gebruiker aan met het useradd-commando; Als deze configuratie wordt uitgevoerd op een FreeBSD-host, wordt het adduser-commando gebruikt.
Een ander opmerkelijk aspect van Puppet is de flexibiliteit. Door de aard van open source software kun je vrij de broncode van Puppet verkrijgen, en als je problemen ondervindt en de mogelijkheid hebt, kun je de code van Puppet aanpassen of verbeteren om bij je omgeving te passen. Daarnaast blijven gemeenschapsontwikkelaars en donateurs de mogelijkheden van Puppet verbeteren. Een grote gemeenschap van ontwikkelaars en gebruikers zet zich ook in voor het leveren van documentatie en technische ondersteuning voor Puppet.
Puppet is ook makkelijk te schalen. Ondersteuning voor aangepaste pakketten en speciale systeemomgevingsconfiguraties kunnen snel en eenvoudig aan de Puppet-installer worden toegevoegd.
3. Puppet's werkmodus
Puppet is een configuratiebeheertool voor C/S-architectuur die het puppet-server-pakket (bekend als Puppet master) installeert op een centrale server. Installeer de Puppet client-software (Puppet Client genoemd) op de doelhost die beheerd moet worden. Wanneer de client verbinding maakt met de Puppet master, wordt het configuratiebestand dat op de Puppet master is gedefinieerd gecompileerd en vervolgens op de client uitgevoerd. Standaard communiceert elke client elk half uur met de server om de update van configuratie-informatie te bevestigen. Als er nieuwe configuratie-informatie is of is gewijzigd, wordt de configuratie opnieuw gecompileerd en gepubliceerd aan elke client voor uitvoering. Je kunt ook actief een update van configuratie-informatie op de server activeren om elke client te dwingen deze te configureren. Als de configuratie-informatie van de client wordt gewijzigd, kan hij de oorspronkelijke configuratie van de server ophalen om dit te corrigeren.
Configuratiebeheer: Poppeninstallatie en gebruik (1)
4. De toekomst van Puppet
Tot slot is Puppet een jong hulpmiddel dat nog steeds in ontwikkeling is. De poppengemeenschap groeit snel, en er worden voortdurend veel nieuwe ideeën toegevoegd, wat leidt tot ontwikkeling, updates en modules die dagelijks worden gepresenteerd.
2. Configuratie en installatie (Puppet 2.6.4 CentOS 5.4 installatie):
Configureer de repository op de puppetserver en client: rpm -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 Voeg toe aan: [epel-pop] naam=Epel Puppet baseurl=http://tmz.fedorapeople.org/repo/puppet/epel/5/$basearch/ enabled=0 gpgcheck=0
Voeg de repository puppet.repo toe: [root@puppetmaster ~]# vi /etc/yum.repos.d/puppet.repo [poppenlabs] name=Puppet Labs Pakketten baseurl=http://yum.puppetlabs.com/base/ enabled=0 gpgcheck=0
Poppenmeesterinstallatie Installatie: [root@puppetmaster ~]# yum --enablerepo=epel,epel-puppet install puppet-server
Pas hosts aan en voeg de volgende twee records toe: [root@puppetmaster ~]# vi /etc/hosts 192.168.0.10 puppetmaster.leju.com pop 192.168.0.100 puppetclient.leju.com
Puppet configureren: [root@puppetmaster ~]# cd /etc/puppet/ [root@puppetmaster pop]# vi puppet.conf
[hoofd] # De Puppet logboekendirectory. # De standaardwaarde is '$vardir/log'. logdir = /var/log/puppet
# Waar Puppet PID-bestanden worden bewaard. # De standaardwaarde is '$vardir/run'. rundir = /var/run/puppet
# Waar SSL-certificaten worden bewaard. # De standaardwaarde is '$confdir/ssl'. ssldir = $vardir/ssl
[agent] # Het bestand waarin Puppetd een lijst van de klassen opslaat # geassocieerd met de teruggevonden configuratie. Kan worden geladen # het aparte ''puppet'' uitvoerbaar bestand met de ''--loadclasses'' # optie. # De standaardwaarde is '$confdir/classes.txt'. classfile = $vardir/classes.txt
# Waar Puppetd de lokale configuratie cachet. Een # extensie die aangeeft dat het cacheformaat automatisch wordt toegevoegd. # De standaardwaarde is '$confdir/localconfig'. localconfig = $vardir/localconfig server = puppetmaster.leju.com Rapport = waar luisteren = waar
[meester] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY Autosign = waar Rapporten = Winkel
[root@puppetmaster pop]# vi fileserver.conf [bestanden] pad /etc/puppet/files Sta toe *
[modules] Sta toe *
[plugins] Sta toe *
[root@puppetmaster pop]# mkdir /etc/puppet/files
[root@puppetmaster pop]# cd-manifesten/ Create site.pp, dat is het configuratiebestand voor de poppeninvoer: [root@puppetmaster manifesteert]# vi site.pp Importeren "modules.pp" Import "roles.pp" import "nodes.pp"
# Algemene instellingen voor standaardtypes Exec { path => "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" }
filebucket { main: server => "puppetmaster.leju.com" } Bestand { backup => main }
Maak modules.pp aan om modules te importeren: [root@puppetmaster manifesteert]# vi modules.pp import "test"
Maak roles.pp aan om serverrollen te definiëren: [root@puppetmaster manifesteert]# vi rollen.pp Klasse basisklasse { Inclusief test
}
Maak nodes.pp aan om de serverknooppunten te configureren: [root@puppetmaster manifesteert]# vi nodes.pp knoop 'basenode' { Include-baseclass
}
knoop 'puppetclient.leju.com' erft baseknoop { tag("test")
}
Node 'puppetmaster.leju.com' erft basenode { tag("test")
}
[root@puppetmaster manifesteert]# cd .. [root@puppetmaster pop]# mkdir-modules Maak een testmodule aan: [root@puppetmaster modules]# mkdir -p test/manifests/ [root@puppetmaster modules]# mkdir test/bestanden/ [root@puppetmaster modules]# cd test/bestanden/ [root@puppetmaster bestanden]# vi test.txt Testlijn! [root@puppetmaster bestanden]# cd .. /manifesten/ Maak een testklasse aan om een bestand aan de client te leveren: [root@puppetmaster manifesteert]# vi init.pp Klassetest { bestand { "/tmp/test.txt": ensure => aanwezig, groep => "wortel", eigenaar => "wortel", mode => "0644", bron => "puppet:///test/test.txt" }
}
Puppet Master lanceren: [root@puppetmaster manifesteert]# /etc/init.d/puppetmaster start Zorg dat poort 8140 online staat.
Installatie van de poppenclient: [root@puppetclient ~]# yum --enablerepo="epel,epel-puppet" installeer pop
Pas hosts aan en voeg de volgende twee records toe: [root@puppetclient ~]# vi /etc/hosts 192.168.0.10 puppetmaster.leju.com pop 192.168.0.100 puppetclient.leju.com
De pop configureren: [root@puppetclient ~]# cd /etc/puppet/ [root@puppetclient pop]# vi pop.conf [hoofd] # De Puppet logboekendirectory. # De standaardwaarde is '$vardir/log'. logdir = /var/log/puppet
# Waar Puppet PID-bestanden worden bewaard. # De standaardwaarde is '$vardir/run'. rundir = /var/run/puppet
# Waar SSL-certificaten worden bewaard. # De standaardwaarde is '$confdir/ssl'. ssldir = $vardir/ssl
[agent] # Het bestand waarin Puppetd een lijst van de klassen opslaat # geassocieerd met de teruggevonden configuratie. Kan worden geladen # het aparte ''puppet'' uitvoerbaar bestand met de ''--loadclasses'' # optie. # De standaardwaarde is '$confdir/classes.txt'. classfile = $vardir/classes.txt
# Waar Puppetd de lokale configuratie cachet. Een # extensie die aangeeft dat het cacheformaat automatisch wordt toegevoegd. # De standaardwaarde is '$confdir/localconfig'. localconfig = $vardir/localconfig
server = puppetmaster.leju.com Rapport = waar luisteren = waar
[root@puppetclient pop]# vi namespaceauth.conf [poppenloper] Laat puppetmaster.leju.com sta toe *.leju.com
[root@puppetclient pop]# vi auth.conf Voeg * toe aan de laatste regel ...... Pad / authenticeer elke Sta toe *
[root@puppetclient pop]# cd Execut puppet: [root@puppetclient ~]# pop --nee --test --trace --debug Als Puppet Master niet zet: autosign=true, moet dit worden uitgevoerd in Puppet Master: [root@puppetmaster ~]# poppencertificaat -l puppetclient.leju.com [root@puppetmaster ~]# poppencertificaat -s puppetclient.leju.com Teken puppetclient.leju.com zo. Ga dan terug naar de client om hier uit te voeren: [root@puppetclient ~]# pop --nee --test --trace --debug Join --nee, de configuratie wordt niet echt toegepast op de client, vooral gebruikt voor testen, om te zien of er fouten in de printout zitten, en voer zonder fouten uit: [root@puppetclient ~]# pop --test --trace --debug
Bekijk het document: [root@puppetclient ~]# ll /tmp/ totaal 8 -rw-r--r-- 1 wortelwortel 11 feb 25 22:35 test.txt Het document is uitgegeven.
Het is ook mogelijk om Puppet Master te pushen: [root@puppetmaster ~]# poppenschop -d --gastheer puppetclient.leju.com Triggeren puppetclient.leju.com Status verkrijgen Status is succes puppetclient.leju.com eindigde met afhaalcode 0 Klaar Terugkeren van 0 geeft aan dat de pop op de cliënt succesvol is geactiveerd.
Stel de pop in op opstart bij automatische start: chkconfig --level 2345 pop on
Verander de poppenspeler om Passenger te gebruiken Passenger is een uitbreiding van Apache 2.x voor het rijden met rails of tandradtoepassingen in Apache. puppetmaster gebruikt standaard WEBrick om bestandsdiensten te leveren; als je veel puppetclients hebt, zal de bestandsservice van puppetmaster slecht zijn om puppetmaster robuuster te maken, dus gebruik Apache om bestandsdiensten te leveren.
Installatie: [root@puppetmaster ~]# yum installeer httpd httpd-devel ruby-devel rubygems Passenger 2.2.2 RHEL5 werkt prima. Voeg foreman.repo repository toe: [root@puppetmaster ~]# vi /etc/yum.repos.d/foreman.repo [voorman] naam=Foreman stabiele repository baseurl=http://yum.theforeman.org/stable gpgcheck=0 enabled=1 [root@puppetmaster ~]# yum installeer rubygem-passenger-2.2.2-1 [root@puppetmaster ~]# rubygem-rack-1.0.1-1 [root@puppetmaster ~]# passenger-install-apache2-module
Installeren van de Apache SSL-module: [root@puppetmaster ~]# Yum installeer mod_ssl
Om de Puppet rack-applicatie te configureren: 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 pop /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 PassagierRuby /usr/bin/ruby PassagierMaxPoolGrootte 30 PassagiersPoolIdleTime 1500 PassagiersMaxVerzoeken 1000 PassagierStatThrottleRate 120 RackAutoDetect Uit RailsAutoDetect Uit
[root@puppetmaster ~]# vi /etc/httpd/conf.d/puppetmasterd.conf # Je wilt deze instellingen waarschijnlijk afstemmen PassagierHighPerformance op PassagierMaxPoolGrootte 12 PassagiersPoolIdleTime 1500 # PassagierTMaxRequests 1000 PassagierStatThrottleRate 120 RackAutoDetect Uit RailsAutoDetect Uit
Luister 8140
<VirtualHost *:8140> SSLEngine op SSLProtocol -ALL +SSLv3 +TLSv1 SSLCipherSuite ALLE:! ADH:RC4+RSA:+HOOG:+MEDIUM:-LAAG:-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 # Als Apache klaagt over ongeldige handtekeningen op de CRL, kun je proberen uit te schakelen # CRL controleert door de volgende regel te laten reageren, maar dit wordt niet aanbevolen. SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem SSLVerifyClient optioneel SSLVerifyDepth 1 SSLOptions +StdEnvVars
# De volgende clientheaders maken het mogelijk dat dezelfde configuratie met Pound werkt. 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 / <Directory /etc/puppet/rack/puppetmasterd/> Opties Geen ToestaanOverride Geen Bevel toestaan, weigeren Sta toe van allen </Directory> </VirtualHost>
Pas het puppetmaster-configuratiebestand aan om de volgende twee regels toe te voegen: [root@puppetmaster ~]# vi /etc/puppet/puppet.conf [meester] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY
Wijzig /etc/sysconfig/puppetmaster: [root@puppetmaster ~]# vi /etc/sysconfig/puppetmaster # Voeg de volgende regel aan het einde toe: PUPPETMASTER_EXTRA_OPTS="--rapporteert winkel" Als je zowel aan de voorman als aan het poppen-dashboard moet rapporteren, voeg dan de volgende regel toe: PUPPETMASTER_EXTRA_OPTS="--rapporten winkel, voorman, puppet_dashboard"
Stop de Puppetmaster-dienst en start de Apache-dienst: [root@puppetmaster ~]# /etc/init.d/puppetmaster stop [root@puppetmaster ~]# /etc/init.d/httpd start
Opstarten start de Puppetmaster-service niet, de opstart start de httpd-service: [root@puppetmaster ~]# chkconfig --level 2345 poppenmeester uit [root@puppetmaster ~]# chkconfig --level 2345 httpd on
Zorg ervoor dat poort 8140 is ingeschakeld: [root@puppetmaster ~]# netstat -tunlp |grep 8140 TCP 0 0 :::8140 :::* LUISTER 9834/httpd
Test aan de clientzijde of het foutenlogboek is afgeprint: [root@puppetclient ~]# pop --test --trace --debug |
Vorig:php-fpm.conf Belangrijke parameters worden in detail uitgelegdVolgend:Op 25 oktober 2014 (zaterdag), om 16.00 uur, werd het luchtverdedigings- en rampenpreventiealarm getest
|