|
|
Publisert på 20.10.2014 09:47:45
|
|
|

1. Introduksjon til Puppet
Systemadministratorer sitter ofte fast i en rekke repeterende oppgaver: oppgradering av pakker, håndtering av konfigurasjonsfiler, systemtjenester, cron-oppgaver, legge til nye konfigurasjoner, fikse feil osv. Disse oppgavene er ofte repetitive og ineffektive, og det første svaret på å løse dem er å automatisere dem, slik at egendefinerte skript dukker opp. På grunn av miljøets kompleksitet utvikles tilpassede skript og applikasjoner gjentatte ganger og det er vanskelig å tilpasse flere plattformer, og fleksibilitet og funksjonalitet er vanskelig å garantere, så automatiserte konfigurasjonsstyringsverktøy som Puppet har dukket opp.
I den åpne kildekode-verdenen finnes det mange konfigurasjonsverktøy å velge mellom, og noen av nøkkelproduktene på dette området er:
Puppet (http://puppet.reductivelabs.com/): Et konfigurasjonsstyringsverktøy skrevet i Ruby som bruker C/S-arkitekturen til å konfigurere klienten i deklarativt språk. Cfengine (http://www.cfengine.org): Et av de første åpen kildekode-konfigurasjonsverktøyene som ble utgitt, utgitt i 1993, det er også en C/S-arkitektur, vanligvis brukt i utdanningsinstitusjoner. LCFG(http://www.lcfg.org/): Et konfigurasjonsstyringsverktøy for C/S-arkitekturer som bruker XML for å definere konfigurasjoner. Bcfg2: Et konfigurasjonsstyringsverktøy for C/S-arkitektur skrevet i Python som bruker spesifikasjoner og klientsvar for å konfigurere målverten.
Dette dokumentet er dedikert til å beskrive hvordan du bruker Puppet til å administrere verten din, applikasjoner, bakgrunnsprogrammer og ulike tjenester.
Om Puppet:
1. Hva brukes Puppet til?
Puppet er et åpen kildekode Ruby-basert systemkonfigurasjonsstyringsverktøy som er avhengig av C/S-distribusjonsarkitekturen. Hovedutvikleren er Luke Kanies, som følger GPLv2-opphavsrettslisensen. Siden 1997 har Kanies vært involvert i UNIX-systemadministrasjon, og utviklingen av Puppet sprang ut fra denne erfaringen. Ikke fornøyd med konfigurasjonsverktøyene som var tilgjengelige, begynte Kanies å utvikle verktøy i Reductive-laboratoriet mellom 2001 og 2005. Snart lanserte Reductive Labs sitt flaggskipprodukt, Puppet.
2. Egenskaper ved Pupput
Mange verktøy for systemkonfigurasjonsstyring fungerer veldig likt, som cfengine. Hva gjør Puppet unik?
Puppets syntaks lar deg lage et separat skript for å bygge en bruker på alle målvertene dine. Alle målverter vil tolke og kjøre modulen etter tur ved å bruke syntaksen som gjelder for det lokale systemet. For eksempel, hvis denne konfigurasjonen kjøres på en Red Hat-server, opprett en bruker med useradd-kommandoen; Hvis denne konfigurasjonen kjøres på en FreeBSD-vert, brukes adduser-kommandoen.
En annen bemerkelsesverdig egenskap ved Puppet er dens fleksibilitet. På grunn av åpen kildekode-programvare kan du fritt få tak i kildekoden til Puppet, og hvis du støter på problemer og har muligheten, kan du endre eller forbedre koden til Puppet for å passe miljøet ditt. I tillegg fortsetter samfunnsutviklere og givere å forbedre Puppets kapasiteter. Et stort fellesskap av utviklere og brukere er også forpliktet til å tilby dokumentasjon og teknisk støtte for Puppet.
Puppet er også lett å skalere. Støtte for tilpassede pakker og spesielle systemmiljøkonfigurasjoner kan raskt og enkelt legges til i Puppet-installasjonen.
3. Dukkens arbeidsmodus
Puppet er et konfigurasjonsstyringsverktøy for C/S-arkitektur som installerer puppet-server-pakken (kjent som Puppet master) på en sentral server. Installer Puppet-klientprogramvaren (kalt Puppet Client) på målverten som må administreres. Når klienten kobler seg til Puppet master, kompileres konfigurasjonsfilen som er definert på Puppet master og kjøres deretter på klienten. Som standard kommuniserer hver klient med serveren hver halvtime for å bekrefte oppdateringen av konfigurasjonsinformasjonen. Hvis det er ny konfigurasjonsinformasjon eller konfigurasjonsinformasjon har endret seg, vil konfigurasjonen bli rekompilert og publisert til hver klient for utførelse. Du kan også aktivt utløse en oppdatering av konfigurasjonsinformasjonen på serveren for å tvinge hver klient til å konfigurere den. Hvis klientens konfigurasjonsinformasjon endres, kan den hente den opprinnelige konfigurasjonen fra serveren for å rette den.
Konfigurasjonsstyring: Dukkeinstallasjon og bruk (1)
4. Fremtiden til Puppet
Til slutt er Puppet et ungt verktøy som fortsatt er under utvikling og utvikling. Puppet-fellesskapet vokser raskt, og mange nye ideer blir stadig innlemmet, noe som fører til utvikling, oppdateringer og moduler som presenteres hver dag.
2. Konfigurasjon og installasjon (Puppet 2.6.4 CentOS 5.4 installasjon):
Konfigurer repositoriet på dukkeserveren og klienten: 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 Legg til: [epel-dukke] Navn=Epel Dukke baseurl=http://tmz.fedorapeople.org/repo/puppet/epel/5/$basearch/ aktivert=0 gpgcheck=0
Legg til repositoriet puppet.repo: [root@puppetmaster ~]# vi /etc/yum.repos.d/puppet.repo [puppetlabs] name=Puppet Labs-pakker baseurl=http://yum.puppetlabs.com/base/ aktivert=0 gpgcheck=0
Installasjon av dukkemester: [root@puppetmaster ~]# yum --enablerepo=epel,epel-puppet install puppet-server
Endre vertene og legg til følgende to poster: [root@puppetmaster ~]# vi /osv/verter 192.168.0.10 puppetmaster.leju.com dukke 192.168.0.100 puppetclient.leju.com
Konfigurere Puppet: [root@puppetmaster ~]# cd /etc/puppet/ [root@puppetmaster dukke]# vi dukke.conf
[hoved] # Dukkeloggkatalogen. # Standardverdien er '$vardir/log'. logdir = /var/log/puppet
# Hvor Puppet PID-filer oppbevares. # Standardverdien er '$vardir/run'. rundir = /var/run/puppet
# Hvor SSL-sertifikater oppbevares. # Standardverdien er '$confdir/ssl'. ssldir = $vardir/ssl
[agent] # Filen der Puppetd lagrer en liste over klassene # assosiert med den hentede konfigurasjonen. Kan lastes inn # den separate ''puppet''-kjørbare filen som bruker ''--loadclasses'' # Alternativ. # Standardverdien er '$confdir/classes.txt'. classfile = $vardir/classes.txt
# Der Puppetd lagrer den lokale konfigurasjonen. En #-utvidelsen som indikerer cache-formatet legges til automatisk. # Standardverdien er '$confdir/localconfig'. localconfig = $vardir/localconfig server = puppetmaster.leju.com rapport = sant lytt = sant
[mester] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY autosign = sann Rapporter = Lagre
[root@puppetmaster puppet]# vi fileserver.conf [filer] sti /etc/puppet/files Tillat *
[moduler] Tillat *
[plugins] Tillat *
[root@puppetmaster dukke]# mkdir /etc/puppet/files
[root@puppetmaster dukke]# CD-manifestasjoner/ Create site.pp, som er konfigurasjonsfilen for dukkeoppføringen: [root@puppetmaster manifesterer]# vi site.pp importer "modules.pp" importer "roles.pp" importer "nodes.pp"
# Generelle innstillinger for standardtyper Exec { path => "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" }
filebucket { main: server => "puppetmaster.leju.com" } Fil { backup => main }
Opprett modules.pp for å importere moduler: [root@puppetmaster manifesterer]# vi moduler.pp import "test"
Opprett roles.pp for å definere serverroller: [root@puppetmaster manifesterer]# vi roller.pp Klasse baseklasse { Inkluder test
}
Opprett nodes.pp for å konfigurere servernodene: [root@puppetmaster manifesterer]# vi nodes.pp node 'basenode' { Inkluder baseklasse
}
Node 'puppetclient.leju.com' arver basenode { tag("test")
}
Node 'puppetmaster.leju.com' arver basenode { tag("test")
}
[root@puppetmaster manifesterer seg]# CD .. [root@puppetmaster dukke]# mkdir-moduler Lag 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 .. /manifester/ Lag en testklasse for å levere en fil til klienten: [root@puppetmaster manifesterer seg]# vi init.pp Klassetest { fil { "/tmp/test.txt": ensure => til stede, gruppe => "rot", eier => "rot", modus => "0644", kilde => "puppet:///test/test.txt" }
}
Lansering av Puppet Master: [root@puppetmaster manifesterer]# /etc/init.d/puppetmaster start Sørg for at port 8140 er oppe.
Installasjon av dukkeklient: [root@puppetclient ~]# yum --enablerepo="epel,epel-puppet" install puppet
Endre vertene og legg til følgende to poster: [root@puppetclient ~]# vi /osv/verter 192.168.0.10 puppetmaster.leju.com dukke 192.168.0.100 puppetclient.leju.com
Konfigurasjon av dukken: [root@puppetclient ~]# CD /osv/dukketeater/ [root@puppetclient dukke]# vi dukke.conf [hoved] # Dukkeloggkatalogen. # Standardverdien er '$vardir/log'. logdir = /var/log/puppet
# Hvor Puppet PID-filer oppbevares. # Standardverdien er '$vardir/run'. rundir = /var/run/puppet
# Hvor SSL-sertifikater oppbevares. # Standardverdien er '$confdir/ssl'. ssldir = $vardir/ssl
[agent] # Filen der Puppetd lagrer en liste over klassene # assosiert med den hentede konfigurasjonen. Kan lastes inn # den separate ''puppet''-kjørbare filen som bruker ''--loadclasses'' # Alternativ. # Standardverdien er '$confdir/classes.txt'. classfile = $vardir/classes.txt
# Der Puppetd lagrer den lokale konfigurasjonen. En #-utvidelsen som indikerer cache-formatet legges til automatisk. # Standardverdien er '$confdir/localconfig'. localconfig = $vardir/localconfig
server = puppetmaster.leju.com rapport = sant lytt = sant
[root@puppetclient dukke]# vi namespaceauth.conf [dukkeløper] Tillat puppetmaster.leju.com tillat *.leju.com
[root@puppetclient dukke]# vi auth.conf Legg til allow * på siste linje ...... Sti / godkjenning Tillat *
[root@puppetclient dukke]# CD Henrette dukken: [root@puppetclient ~]# puppetd --noop --test --trace --debug Hvis Puppet Master ikke setter: autosign=true, må det utføres i Puppet Master: [root@puppetmaster ~]# dukke-cert -l puppetclient.leju.com [root@puppetmaster ~]# dukke-cert -s puppetclient.leju.com Signer puppetclient.leju.com slik. Gå deretter tilbake til klienten for å kjøre her: [root@puppetclient ~]# puppetd --noop --test --trace --debug Join --noop, konfigurasjonen vil egentlig ikke bli brukt på klienten, hovedsakelig brukt til testing, for å se om det er feil i utskriften, og utføres uten feil: [root@puppetclient ~]# Dukke --test --spor --debug
Se dokumentet: [root@puppetclient ~]# ll /tmp/ totalt 8 -rw-r--r-- 1 rotrot 11. feb 25 22:35 test.txt Dokumentet er utstedt.
Det er også mulig å presse på Puppet Master: [root@puppetmaster ~]# dukkespark -d --vert puppetclient.leju.com Utløsende puppetclient.leju.com Å få status Status er suksess puppetclient.leju.com avsluttet med utgangskode 0 Ferdig Å returnere 0 indikerer at dukken på klienten ble utløst med suksess.
Sett dukken til oppstart med autostart: chkconfig --nivå 2345 dukke på
Modifiser dukkemesteren til å bruke Passasjer Passenger er en utvidelse av Apache 2.x for kjøring av skinner eller tannstangapplikasjoner i Apache. puppetmaster bruker WEBrick til å tilby filtjenester som standard, hvis du har mange puppet-klienter, vil puppetmasters filtjenesteytelse være dårlig for å gjøre puppetmaster mer robust, så bruk Apache til å tilby filtjenester.
Installasjon: [root@puppetmaster ~]# yum install httpd httpd-devel ruby-devel rubygems Passasjer 2.2.2 RHEL5 fungerer fint. Legg til foreman.repo repository: [root@puppetmaster ~]# vi /etc/yum.repos.d/foreman.repo [formann] navn=Foreman stabilt arkiv baseurl=http://yum.theforeman.org/stable gpgcheck=0 enabled=1 [root@puppetmaster ~]# Yum install rubygem-passenger-2.2.2-1 [root@puppetmaster ~]# rubygem-rack-1.0.1-1 [root@puppetmaster ~]# passenger-install-apache2-module
Installasjon av Apache SSL-modulen: [root@puppetmaster ~]# nam installer mod_ssl
For å konfigurere Puppet rack-applikasjonen: 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 PassasjerRuby /usr/bin/ruby PassasjerMaxBassengStørrelse 30 PassengerPoolIdleTime 1500 PassasjerMaxForespørsler 1000 PassengerStatThrottleRate 120 RackAutoDetect Av RailsAutoDetect Av
[root@puppetmaster ~]# vi /etc/httpd/conf.d/puppetmasterd.conf # Du vil sannsynligvis justere disse innstillingene Passasjerhøyytelse på PassasjerMaxBassengStørrelse 12 PassengerPoolIdleTime 1500 # PassasjerMaxForespørsler 1000 PassengerStatThrottleRate 120 RackAutoDetect Av RailsAutoDetect Av
Lytt 8140
<VirtualHost *:8140> SSLEngine på SSLProtocol -ALL +SSLv3 +TLSv1 SSLCipherSuite ALLE:! 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 # Hvis Apache klager på ugyldige signaturer på CRL, kan du prøve å deaktivere # CRL sjekker ved å kommentere neste linje, men dette anbefales ikke. SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem SSLVerifyClient valgfritt SSLVerifyDepth 1 SSLOptions +StdEnvVars
# Følgende klientheadere tillater samme konfigurasjon å fungere 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/> Alternativer Ingen TillatOverstyring Ingen Ordre tillatt, nekt Tillat fra alle </Directory> </VirtualHost>
Endre puppetmaster-konfigurasjonsfilen for å legge til følgende to linjer: [root@puppetmaster ~]# vi /etc/puppet/puppet.conf [mester] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY
Endre /etc/sysconfig/puppetmaster: [root@puppetmaster ~]# vi /etc/sysconfig/puppetmaster # Legg til følgende linje på slutten: PUPPETMASTER_EXTRA_OPTS="--rapporterer butikk" Hvis du må rapportere til både formann og dukke-dashboard, legg til følgende linje: PUPPETMASTER_EXTRA_OPTS="--rapporterer butikk, formann, puppet_dashboard"
Stopp puppetmaster-tjenesten og start apache-tjenesten: [root@puppetmaster ~]# /etc/init.d/puppetmaster stopp [root@puppetmaster ~]# /etc/init.d/httpd start
Oppstart starter ikke Puppetmaster-tjenesten, oppstart starter httpd-tjenesten: [root@puppetmaster ~]# chkconfig --nivå 2345 dukkemester av [root@puppetmaster ~]# chkconfig --level 2345 httpd on
Sørg for at port 8140 er aktivert: [root@puppetmaster ~]# netstat -tunlp |grep 8140 tcp 0 0 :::8140 :::* HØR 9834/httpd
Test på klientsiden for å se om feilloggen er skrevet ut: [root@puppetclient ~]# Dukke --test --spor --debug |
Foregående:php-fpm.conf viktige parametere forklares i detaljNeste:Den 25. oktober 2014 (lørdag), klokken 16.00, ble luftforsvars- og katastrofeforebyggingsalarmen testet
|