1. Įvadas į lėlę
Sistemos administratoriai dažnai įstringa atliekant daugybę pasikartojančių užduočių: atnaujina paketus, tvarko konfigūracijos failus, sistemos paslaugas, cron užduotis, prideda naujų konfigūracijų, taiso klaidas ir kt. Šios užduotys dažnai pasikartoja ir yra neefektyvios, o pirmasis atsakas į šių užduočių sprendimą yra jų automatizavimas, todėl atsiranda pasirinktiniai scenarijai. Dėl aplinkos sudėtingumo pasirinktiniai scenarijai ir programos yra nuolat kuriami ir sunkiai pritaikomi kelioms platformoms, o lankstumą ir funkcionalumą sunku garantuoti, todėl atsirado automatizuotų konfigūracijos valdymo įrankių, tokių kaip "Puppet".
Atvirojo kodo pasaulyje galima rinktis iš daugybės konfigūravimo įrankių, o kai kurie pagrindiniai šios srities produktai yra šie:
Puppet (http://puppet.reductivelabs.com/): Ruby kalba parašytas konfigūracijos valdymo įrankis, kuris naudoja C/S architektūrą, kad sukonfigūruotų klientą deklaratyvia kalba. Cfengine (http://www.cfengine.org): Vienas iš pirmųjų išleistų atvirojo kodo konfigūravimo įrankių, išleistas 1993 m., Tai taip pat C/S architektūra, dažniausiai naudojama švietimo įstaigose. LCFG(http://www.lcfg.org/): C/S architektūrų konfigūracijos valdymo įrankis, kuris naudoja XML konfigūracijoms apibrėžti. Bcfg2: C/S architektūros konfigūracijos valdymo įrankis, parašytas Python, kuris naudoja specifikacijas ir kliento atsakymus tiksliniam pagrindiniam kompiuteriui konfigūruoti.
Šis dokumentas skirtas aprašyti, kaip naudoti "Puppet" pagrindiniam kompiuteriui, programoms, foninėms programoms ir įvairioms paslaugoms valdyti.
Apie "Puppet":
1. Kam naudojamas Puppet?
"Puppet" yra atvirojo kodo "Ruby" pagrindu sukurtas sistemos konfigūracijos valdymo įrankis, pagrįstas C/S diegimo architektūra. Pagrindinis kūrėjas yra Luke Kanies, kuris vadovaujasi GPLv2 autorių teisių licencija. Nuo 1997 m. Kanies dalyvauja UNIX sistemos administravime, o "Puppet" kūrimas kilo iš šios patirties. Nepatenkintas turimais konfigūravimo įrankiais, Kanies pradėjo kurti įrankius Reductive laboratorijoje 2001–2005 m. Netrukus "Reductive Labs" išleido savo pavyzdinį produktą "Puppet".
2. Pupput savybės
Daugelis sistemos konfigūracijos valdymo įrankių veikia labai panašiai, pavyzdžiui, cfengine. Kuo "Puppet" yra unikali?
"Puppet" sintaksė leidžia sukurti atskirą scenarijų, kad sukurtumėte vartotoją visuose tiksliniuose pagrindiniuose kompiuteriuose. Visi tiksliniai pagrindiniai kompiuteriai interpretuos ir vykdys modulį savo ruožtu, naudodami vietinei sistemai taikomą sintaksę. Pavyzdžiui, jei ši konfigūracija vykdoma "Red Hat" serveryje, sukurkite vartotoją naudodami komandą useradd; Jei ši konfigūracija vykdoma FreeBSD pagrindiniame kompiuteryje, naudojama adduser komanda.
Kitas nuostabus "Puppet" aspektas yra jos lankstumas. Dėl atvirojo kodo programinės įrangos pobūdžio galite laisvai gauti "Puppet" šaltinio kodą, o jei susiduriate su problemomis ir turite galimybę, galite modifikuoti arba patobulinti "Puppet" kodą, kad jis atitiktų jūsų aplinką. Be to, bendruomenės kūrėjai ir rėmėjai toliau tobulina "Puppet" galimybes. Didelė kūrėjų ir vartotojų bendruomenė taip pat yra įsipareigojusi teikti "Puppet" dokumentaciją ir techninę pagalbą.
Lėlę taip pat lengva keisti. Pasirinktinio paketo palaikymas ir specialios sistemos aplinkos konfigūracijos gali būti greitai ir lengvai įtrauktos į "Puppet" diegimo programą.
3. Lėlių darbo režimas
"Puppet" yra C/S architektūros konfigūracijos valdymo įrankis, kuris centriniame serveryje įdiegia lėlių serverio paketą (žinomą kaip "Puppet master"). Įdiekite "Puppet" kliento programinę įrangą (vadinamą "Puppet Client") tiksliniame pagrindiniame kompiuteryje, kurį reikia valdyti. Kai klientas prisijungia prie lėlių meistro, sukompiliuojamas konfigūracijos failas, apibrėžtas lėlių meistre, ir paleidžiamas kliente. Pagal numatytuosius nustatymus kiekvienas klientas bendrauja su serveriu kas pusvalandį, kad patvirtintų konfigūracijos informacijos atnaujinimą. Jei yra nauja konfigūracijos informacija arba pasikeitė konfigūracijos informacija, konfigūracija bus iš naujo kompiliuojama ir publikuojama kiekvienam klientui vykdyti. Taip pat galite aktyviai suaktyvinti serverio konfigūracijos informacijos atnaujinimą, kad priverstumėte kiekvieną klientą ją sukonfigūruoti. Jei kliento konfigūracijos informacija pakeičiama, jis gali gauti pradinę konfigūraciją iš serverio, kad ją ištaisytų.
Konfigūracijos valdymas: lėlių diegimas ir naudojimas (1)
4. Lėlių ateitis
Galiausiai, "Puppet" yra jaunas įrankis, kuris vis dar kuriamas ir tobulinamas. Lėlių bendruomenė sparčiai auga, nuolat įtraukiama daug naujų idėjų, skatinančių kasdien pristatyti plėtrą, atnaujinimus ir modulius.
2. Konfigūracija ir diegimas (Puppet 2.6.4 CentOS 5.4 diegimas):
Sukonfigūruokite saugyklą lėlių serveryje ir kliente: aps./min -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 Pridėti į: [epel-marionetė] name=epel lėlė baseurl=http://tmz.fedorapeople.org/repo/puppet/epel/5/$basearch/ įjungta=0 gpgcheck=0
Pridėkite saugyklą puppet.repo: [root@puppetmaster ~]# vi /etc/yum.repos.d/puppet.repo [lėlių laboratorijos] name=Puppet Labs paketai baseurl=http://yum.puppetlabs.com/base/ įjungta=0 gpgcheck=0
Lėlių meistro montavimas: [root@puppetmaster ~]# yum --enablerepo=epel,epel-puppet install puppet-server
Modifikuokite pagrindinius kompiuterius ir įtraukite šiuos du įrašus: [root@puppetmaster ~]# vi /etc/hosts 192.168.0.10 puppetmaster.leju.com lėlė 192.168.0.100 puppetclient.leju.com
Lėlės konfigūravimas: [root@puppetmaster ~]# cd /etc/puppet/ [root@puppetmaster lėlė]# vi puppet.conf
[pagrindinis] # Lėlių žurnalo katalogas. # Numatytoji reikšmė yra "$vardir/log". logdir = /var/log/marionetė
# Kur saugomi lėlių PID failai. # Numatytoji reikšmė yra "$vardir/run". rundir = /var/run/puppet
# Kur saugomi SSL sertifikatai. # Numatytoji reikšmė yra "$confdir/ssl". ssldir = $vardir/ssl
[agentas] # Failas, kuriame puppetd saugo klasių sąrašą # susietas su nuskaityta konfigūracija. Galima pakrauti # atskiras ''puppet'' vykdomasis failas naudojant ''--loadclasses'' # variantas. # Numatytoji reikšmė yra "$confdir/classes.txt". klasės failas = $vardir/classes.txt
# Kur puppetd talpykloje vietinę konfigūraciją. An # plėtinys, nurodantis talpyklos formatą, pridedamas automatiškai. # Numatytoji reikšmė yra '$confdir/localconfig'. localconfig = $vardir/localconfig serveris = puppetmaster.leju.com ataskaita = teisinga klausytis = tiesa
[meistras] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY automatinis pasirašymas = teisinga ataskaitos = saugoti
[root@puppetmaster lėlė]# vi fileserver.conf [failai] kelias /etc/lėlė/failai leisti *
[moduliai] leisti *
[įskiepiai] leisti *
[root@puppetmaster lėlė]# mkdir /etc/puppet/files
[root@puppetmaster lėlė]# cd manifests/ Sukurkite site.pp, kuris yra lėlių įrašo konfigūracijos failas: [root@puppetmaster manifestai]# vi site.pp importuoti "modules.pp" Importuoti "roles.pp" importuoti "nodes.pp"
# Bendrieji standartinių tipų nustatymai Exec { path => "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" }
filebucket { main: server => "puppetmaster.leju.com" } Failas { atsarginė kopija => pagrindinis }
Sukurkite modules.pp moduliams importuoti: [root@puppetmaster manifests]# vi modules.pp importuoti "testą"
Sukurkite roles.pp serverio vaidmenims apibrėžti: [root@puppetmaster manifests]# vi roles.pp klasė baseclass { įtraukti testą
}
Sukurkite nodes.pp, kad sukonfigūruotumėte serverio mazgus: [root@puppetmaster manifests]# vi nodes.pp mazgas 'basenode' { Įtraukti bazinę klasę
}
mazgas 'puppetclient.leju.com' paveldi basenode { žyma ("testas")
}
mazgas 'puppetmaster.leju.com' paveldi basenode { žyma ("testas")
}
[root@puppetmaster manifests]# cd .. [root@puppetmaster lėlė]# mkdir moduliai Sukurkite bandomąjį modulį: [root@puppetmaster moduliai]# mkdir -p testas/manifestai/ [root@puppetmaster moduliai]# mkdir testas/failai/ [root@puppetmaster moduliai]# CD testas/failai/ [root@puppetmaster failai]# vi test.txt bandymo linija! [root@puppetmaster failai]# cd .. /manifestai/ Sukurkite bandomąją klasę, kad pristatytumėte failą klientui: [root@puppetmaster manifests]# vi init.pp klasės testas { failas { "/tmp/test.txt": užtikrinti = > yra, group => "šaknis", savininkas => "šaknis", režimas = > "0644", šaltinis => "puppet:///test/test.txt" }
}
"Puppet Master" paleidimas: [root@puppetmaster manifestai]# /etc/init.d/puppetmaster pradžia Įsitikinkite, kad 8140 prievadas įjungtas.
Lėlių kliento diegimas: [root@puppetclient ~]# yum --enablerepo="epel,epel-puppet" įdiegti lėlę
Modifikuokite pagrindinius kompiuterius ir įtraukite šiuos du įrašus: [root@puppetclient ~]# vi /etc/hosts 192.168.0.10 puppetmaster.leju.com lėlė 192.168.0.100 puppetclient.leju.com
Lėlės konfigūravimas: [root@puppetclient ~]# cd /etc/puppet/ [root@puppetclient lėlė]# vi puppet.conf [pagrindinis] # Lėlių žurnalo katalogas. # Numatytoji reikšmė yra "$vardir/log". logdir = /var/log/marionetė
# Kur saugomi lėlių PID failai. # Numatytoji reikšmė yra "$vardir/run". rundir = /var/run/puppet
# Kur saugomi SSL sertifikatai. # Numatytoji reikšmė yra "$confdir/ssl". ssldir = $vardir/ssl
[agentas] # Failas, kuriame puppetd saugo klasių sąrašą # susietas su nuskaityta konfigūracija. Galima pakrauti # atskiras ''puppet'' vykdomasis failas naudojant ''--loadclasses'' # variantas. # Numatytoji reikšmė yra "$confdir/classes.txt". klasės failas = $vardir/classes.txt
# Kur puppetd talpykloje vietinę konfigūraciją. An # plėtinys, nurodantis talpyklos formatą, pridedamas automatiškai. # Numatytoji reikšmė yra '$confdir/localconfig'. localconfig = $vardir/localconfig
serveris = puppetmaster.leju.com ataskaita = teisinga klausytis = tiesa
[root@puppetclient lėlė]# vi namespaceauth.conf [lėlių bėgikas] leisti puppetmaster.leju.com leisti *.leju.com
[root@puppetclient lėlė]# vi auth.conf Pridėti leisti * į paskutinę eilutę ...... kelias / Auth bet koks leisti *
[root@puppetclient lėlė]# cd Vykdyti lėlę: [root@puppetclient ~]# puppetd --noop --test --trace --debug Jei Puppet Master nenustato: autosign=true, jis turi būti vykdomas Puppet Master: [root@puppetmaster ~]# lėlių sertifikatas -l puppetclient.leju.com [root@puppetmaster ~]# lėlių sertifikatas -s puppetclient.leju.com Pasirašykite puppetclient.leju.com taip. Tada grįžkite į klientą ir vykdykite čia: [root@puppetclient ~]# puppetd --noop --test --trace --debug Prisijunkite --noop, konfigūracija tikrai nebus taikoma klientui, daugiausia naudojama testavimui, kad pamatytumėte, ar spaudinyje nėra klaidų, ir vykdykite be klaidų: [root@puppetclient ~]# puppetd --test --trace --debug
Peržiūrėti dokumentą: [root@puppetclient ~]# ll /tmp/ Iš viso 8 -rw-r--r-- 1 šaknis šaknis 11 Vas 25 22:35 test.txt Dokumentas išduotas.
Taip pat galima paspausti "Puppet Master": [root@puppetmaster ~]# lėlių smūgis -d --šeimininkas puppetclient.leju.com Suaktyvinti puppetclient.leju.com Statuso gavimas Būsena yra sėkmė puppetclient.leju.com baigtas su išėjimo kodu 0 Baigta Grąžinimas 0 rodo, kad kliento lėlė buvo sėkmingai suaktyvinta.
Nustatykite lėlę automatiniam paleidimui: chkconfig --lygis 2345 lėlė įjungta
Modifikuoti lėlių meistrą, kad būtų naudojamas keleivis "Keleivis" yra "Apache 2.x" plėtinys, skirtas "Apache" bėgių arba stovų programoms vykdyti. puppetmaster naudoja WEBrick failų paslaugoms teikti pagal numatytuosius nustatymus, jei turite daug lėlių klientų, puppetmaster failų paslaugos našumas bus prastas, kad puppetmaster būtų patikimesnis, todėl naudokite Apache failų paslaugoms teikti.
Montavimas: [root@puppetmaster ~]# yum install httpd httpd-devel ruby-devel rubygems Keleivis 2.2.2 RHEL5 veikia gerai. Pridėti foreman.repo saugyklą: [root@puppetmaster ~]# vi /etc/yum.repos.d/foreman.repo [meistras] name=Meistro stabili saugykla baseurl=http://yum.theforeman.org/stable gpgcheck=0 įjungta=1 [root@puppetmaster ~]# yum įdiegti rubygem-passenger-2.2.2-1 [root@puppetmaster ~]# rubygem-rack-1.0.1-1 [root@puppetmaster ~]# keleivių-įdiegti-apache2-module
Apache SSL modulio diegimas: [root@puppetmaster ~]# yum įdiegti mod_ssl
Norėdami sukonfigūruoti lėlių stovo programą: mkdir -p /etc/lėlė/stelažas/lėlių meistras/ mkdir /etc/lėlė/stovas/lėlių meistras/viešasis /etc/lėlė/stovas/lėlių meistras/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 lėlė /etc/lėlė/stelažas/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 KeleivisRuby /usr/bin/ruby KeleivisMaxPoolDydis 30 Keleivio baseinasTuščiosios eigos laikas 1500 KeleivisMaxPrašymai 1000 Keleivio stat.Droselio norma 120 Stovo automatinis aptikimas išjungtas Bėgių automatinis aptikimas išjungtas
[root@puppetmaster ~]# vi /etc/httpd/conf.d/puppetmasterd.conf # tikriausiai norėsite sureguliuoti šiuos nustatymus KeleivisDidelis našumas įjungtas KeleivisMaxBaseinasDydis 12 Keleivio baseinasTuščiosios eigos laikas 1500 # KeleivisMaxPrašymai 1000 Keleivio stat.Droselio norma 120 Stovo automatinis aptikimas išjungtas Bėgių automatinis aptikimas išjungtas
Klausyti 8140
<VirtualHost *:8140> SSLEngine įjungta SSLProtocol -ALL +SSLv3 +TLSv1 SSLCipherSuite VISI:! 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 # Jei "Apache" skundžiasi negaliojančiais parašais CRL, galite pabandyti išjungti # CRL tikrinimas komentuojant kitą eilutę, tačiau tai nerekomenduojama. SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem SSLVerifyClient pasirinktinai SSLVerifyDepth 1 SSLOptions +StdEnvVars
# Šios kliento antraštės leidžia tą pačią konfigūraciją dirbti su Svaru. RequestHeader set X-SSL-Subject %{SSL_CLIENT_S_DN}e RequestHeader rinkinys X-Client-DN %{SSL_CLIENT_S_DN}e RequestHeader rinkinys X-Client-Verify %{SSL_CLIENT_VERIFY}e
DocumentRoot /etc/puppet/rack/puppetmasterd/public/ RackBaseURI / <Katalogas /etc/puppet/rack/puppetmasterd/> Parinktys Nėra LeistiNepaisyti nė vieno Užsakyti leisti,atmesti leisti iš visų </Directory> </VirtualHost>
Pakeiskite lėlių meistro konfigūracijos failą, kad įtrauktumėte šias dvi eilutes: [root@puppetmaster ~]# vi /etc/puppet/puppet.conf [meistras] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY
Modifikuoti /etc/sysconfig/puppetmaster: [root@puppetmaster ~]# vi /etc/sysconfig/puppetmaster # Pabaigoje pridėkite šią eilutę: PUPPETMASTER_EXTRA_OPTS="--ataskaitų saugykla" Jei jums reikia pranešti ir meistrui, ir lėlių prietaisų skydeliui, pridėkite šią eilutę: PUPPETMASTER_EXTRA_OPTS="--ataskaitos parduotuvė, meistras, puppet_dashboard"
Sustabdykite lėlių meistro paslaugą ir paleiskite "Apache" paslaugą: [root@puppetmaster ~]# /etc/init.d/puppetmaster stop [root@puppetmaster ~]# /etc/init.d/httpd start
Įkrova nepaleidžia lėlių meistro paslaugos, įkrova paleidžia httpd paslaugą: [root@puppetmaster ~]# chkconfig --lygis 2345 puppetmaster išjungtas [root@puppetmaster ~]# chkconfig --level 2345 httpd on
Įsitikinkite, kad įjungtas 8140 prievadas: [root@puppetmaster ~]# netstat -tunlp |grep 8140 tcp 0 0 :::8140 :::* KLAUSYTI 9834/httpd
Patikrinkite kliento pusėje, kad pamatytumėte, ar klaidų žurnalas išspausdintas: [root@puppetclient ~]# puppetd --test --trace --debug |