1. Ievads leļļu
Sistēmas administratori bieži ir iestrēguši vairākos atkārtotos uzdevumos: pakotņu jaunināšana, konfigurācijas failu pārvaldība, sistēmas pakalpojumi, cron uzdevumi, jaunu konfigurāciju pievienošana, kļūdu labošana utt. Šie uzdevumi bieži atkārtojas un ir neefektīvi, un pirmā reakcija uz šo uzdevumu risināšanu ir to automatizācija, tāpēc parādās pielāgoti skripti. Vides sarežģītības dēļ pielāgoti skripti un lietojumprogrammas tiek atkārtoti izstrādāti un grūti pielāgojami vairākām platformām, un elastību un funkcionalitāti ir grūti garantēt, tāpēc ir parādījušies automatizēti konfigurācijas pārvaldības rīki, piemēram, Puppet.
Atvērtā koda pasaulē ir daudz konfigurācijas rīku, no kuriem izvēlēties, un daži no galvenajiem produktiem šajā jomā ir:
Puppet (http://puppet.reductivelabs.com/): konfigurācijas pārvaldības rīks, kas rakstīts Ruby, kas izmanto C/S arhitektūru, lai konfigurētu klientu deklaratīvā valodā. Cfengine (http://www.cfengine.org): Viens no pirmajiem atvērtā koda konfigurācijas rīkiem, kas tika izlaists 1993. gadā, tas ir arī C / S arhitektūra, ko parasti izmanto izglītības iestādēs. LCFG(http://www.lcfg.org/): konfigurācijas pārvaldības rīks C/S arhitektūrām, kas izmanto XML konfigurāciju definēšanai. Bcfg2: konfigurācijas pārvaldības rīks C/S arhitektūrai, kas rakstīts Python, kas izmanto specifikācijas un klienta atbildes, lai konfigurētu mērķa resursdatoru.
Šis dokuments ir veltīts, lai aprakstītu, kā izmantot Puppet, lai pārvaldītu resursdatoru, lietojumprogrammas, fona programmas un dažādus pakalpojumus.
Par Puppet:
1. Kāpēc lieto Puppet?
Puppet ir atvērtā koda Ruby sistēmas konfigurācijas pārvaldības rīks, kas balstās uz C/S izvietošanas arhitektūru. Galvenais izstrādātājs ir Lūks Kaniess, kas seko GPLv2 autortiesību licencei. Kopš 1997. gada Kanies ir iesaistīts UNIX sistēmas administrēšanā, un Puppet izstrāde izrietēja no šīs pieredzes. Neapmierināts ar pieejamajiem konfigurācijas rīkiem, Kanies sāka izstrādāt rīkus Reductive laboratorijā no 2001. līdz 2005. gadam. Drīz Reductive Labs izlaida savu vadošo produktu Puppet.
2. Leļļu iezīmes
Daudzi sistēmas konfigurācijas pārvaldības rīki darbojas ļoti līdzīgi, piemēram, cfengine. Kas padara Puppet unikālu?
Puppet sintakse ļauj izveidot atsevišķu skriptu, lai izveidotu lietotāju visos mērķa resursdatoros. Visi mērķa resursdatori interpretēs un izpildīs moduli pēc kārtas, izmantojot vietējai sistēmai piemērojamo sintaksi. Piemēram, ja šī konfigurācija tiek izpildīta Red Hat serverī, izveidojiet lietotāju, izmantojot komandu useradd; Ja šī konfigurācija tiek izpildīta FreeBSD resursdatorā, tiek izmantota pievienotāja komanda.
Vēl viens ievērojams Puppet aspekts ir tā elastība. Atvērtā pirmkoda programmatūras rakstura dēļ jūs varat brīvi iegūt Puppet pirmkodu, un, ja rodas problēmas un jums ir iespēja, varat modificēt vai uzlabot Puppet kodu, lai tas atbilstu savai videi. Turklāt kopienas izstrādātāji un ziedotāji turpina uzlabot Puppet iespējas. Liela izstrādātāju un lietotāju kopiena ir apņēmusies nodrošināt dokumentāciju un tehnisko atbalstu Puppet.
Leļļu ir arī viegli mērogot. Pielāgotu pakotņu atbalstu un īpašas sistēmas vides konfigurācijas var ātri un viegli pievienot Puppet instalētājam.
3. Leļļu darba režīms
Puppet ir C/S arhitektūras konfigurācijas pārvaldības rīks, kas instalē leļļu servera pakotni (pazīstams kā Puppet master) centrālajā serverī. Instalējiet Puppet klienta programmatūru (sauktu par Puppet Client) mērķa resursdatorā, kas jāpārvalda. Kad klients izveido savienojumu ar leļļu šablonu, konfigurācijas fails, kas definēts leļļu šablonā, tiek kompilēts un pēc tam palaists klientā. Pēc noklusējuma katrs klients sazinās ar serveri ik pēc pusstundas, lai apstiprinātu konfigurācijas informācijas atjaunināšanu. Ja ir jauna konfigurācijas informācija vai konfigurācijas informācija ir mainījusies, konfigurācija tiks pārkompilēta un publicēta katram klientam izpildei. Varat arī aktīvi aktivizēt konfigurācijas informācijas atjaunināšanu serverī, lai piespiestu katru klientu to konfigurēt. Ja klienta konfigurācijas informācija tiek mainīta, tas var iegūt sākotnējo konfigurāciju no servera, lai to labotu.
Konfigurācijas pārvaldība: leļļu instalēšana un lietošana (1)
4. Leļļu nākotne
Visbeidzot, Puppet ir jauns rīks, kas joprojām tiek izstrādāts un attīstīts. Leļļu kopiena strauji aug, un daudzas jaunas idejas tiek pastāvīgi iekļautas, rosinot izstrādi, atjauninājumus un moduļus, kas tiek prezentēti katru dienu.
2. Konfigurācija un instalēšana (Puppet 2.6.4, CentOS 5.4 instalēšana):
Konfigurējiet repozitoriju marionešu serverī un klientā: apgriezieni minūtē -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 Pievienot: [epel-lelle] name=epel lelle baseurl=http://tmz.fedorapeople.org/repo/puppet/epel/5/$basearch/ iespējots=0 gpgcheck=0
Pievienojiet repozitoriju puppet.repo: [root@puppetmaster ~]# vi /etc/yum.repos.d/puppet.repo [leļļu laboratorijas] name=Puppet Labs paketes baseurl=http://yum.puppetlabs.com/base/ iespējots=0 gpgcheck=0
Leļļu meistara uzstādīšana: [root@puppetmaster ~]# yum --enablerepo=epel,epel-puppet install puppet-server
Modificējiet resursdatorus un pievienojiet šādus divus ierakstus: [root@puppetmaster ~]# vi /etc/hosts 192.168.0.10 puppetmaster.leju.com lelle 192.168.0.100 puppetclient.leju.com
Leļļu konfigurēšana: [root@puppetmaster ~]# cd /etc/puppet/ [root@puppetmaster lelle]# vi lelle.conf
[galvenais] # Leļļu žurnāla direktorijs. # Noklusējuma vērtība ir '$vardir/log'. logdir = /var/log/lelle
# Kur tiek glabāti leļļu PID faili. # Noklusējuma vērtība ir '$vardir/run'. rundir = /var/run/puppet
# Kur tiek glabāti SSL sertifikāti. # Noklusējuma vērtība ir '$confdir/ssl'. ssldir = $vardir/ssl
[aģents] # Fails, kurā puppetd glabā klašu sarakstu #, kas saistīts ar izgūto konfigurāciju. Var ielādēt # atsevišķais ''puppet'' izpildāmais fails, izmantojot ''--loadclasses'' # opcija. # Noklusējuma vērtība ir '$confdir/classes.txt'. classfile = $vardir/classes.txt
# Kur puppetd kešatmiņā saglabā vietējo konfigurāciju. Un # paplašinājums, kas norāda kešatmiņas formātu, tiek pievienots automātiski. # Noklusējuma vērtība ir '$confdir/localconfig'. localconfig = $vardir/localconfig serveris = puppetmaster.leju.com atskaite = patiess klausīties = patiesi
[meistars] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY automātiskā parakstīšanās = patiess Atskaites = Uzglabāt
[root@puppetmaster lelle]# vi fileserver.conf [faili] ceļš /etc/puppet/files atļaut *
[moduļi] atļaut *
[spraudņi] atļaut *
[root@puppetmaster lelle]# mkdir /etc/puppet/files
[root@puppetmaster lelle]# CD manifests/ Izveidojiet site.pp, kas ir leļļu ieraksta konfigurācijas fails: [root@puppetmaster manifests]# vi site.pp importēt "modules.pp" importēt "roles.pp" importēt "nodes.pp"
# Vispārīgie iestatījumi standarta tipiem Exec { ceļš => "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" }
filebucket { main: server => "puppetmaster.leju.com" } Fails { backup => main }
Izveidojiet modules.pp, lai importētu moduļus: [root@puppetmaster manifests]# vi moduļi.pp importēt "test"
Izveidojiet roles.pp, lai definētu servera lomas: [root@puppetmaster manifests]# vi roles.pp klases bāzes klase { iekļaut testu
}
Izveidojiet nodes.pp, lai konfigurētu servera mezglus: [root@puppetmaster manifests]# vi nodes.pp mezgls 'basenode' { Iekļaut pamatklasi
}
mezgls 'puppetclient.leju.com' pārmanto basenode { tag("tests")
}
mezgls 'puppetmaster.leju.com' pārmanto basenode { tag("tests")
}
[root@puppetmaster manifests]# cd .. [root@puppetmaster lelle]# mkdir moduļi Izveidojiet testa moduli: [root@puppetmaster moduļi]# mkdir -p tests/manifests/ [root@puppetmaster moduļi]# mkdir tests/faili/ [root@puppetmaster moduļi]# cd tests/faili/ [root@puppetmaster faili]# vi test.txt testa līnija! [root@puppetmaster faili]# cd .. /manifesti/ Izveidojiet testa klasi, lai piegādātu failu klientam: [root@puppetmaster manifests]# vi init.pp klases tests { fails { "/tmp/test.txt": nodrošināt => klāt, grupa => "sakne", īpašnieks => "sakne", režīms = > "0644", avots => "puppet:///test/test.txt" }
}
Leļļu meistara palaišana: [root@puppetmaster manifests]# /etc/init.d/puppetmaster start Pārliecinieties, vai ports 8140 ir atvērts.
Leļļu klienta instalēšana: [root@puppetclient ~]# yum --enablerepo="epel,epel-puppet" instalēt leļļu
Modificējiet resursdatorus un pievienojiet šādus divus ierakstus: [root@puppetclient ~]# vi /etc/hosts 192.168.0.10 puppetmaster.leju.com lelle 192.168.0.100 puppetclient.leju.com
Leļļu konfigurēšana: [root@puppetclient ~]# cd /etc/puppet/ [root@puppetclient lelle]# vi lelle.conf [galvenais] # Leļļu žurnāla direktorijs. # Noklusējuma vērtība ir '$vardir/log'. logdir = /var/log/lelle
# Kur tiek glabāti leļļu PID faili. # Noklusējuma vērtība ir '$vardir/run'. rundir = /var/run/puppet
# Kur tiek glabāti SSL sertifikāti. # Noklusējuma vērtība ir '$confdir/ssl'. ssldir = $vardir/ssl
[aģents] # Fails, kurā puppetd glabā klašu sarakstu #, kas saistīts ar izgūto konfigurāciju. Var ielādēt # atsevišķais ''puppet'' izpildāmais fails, izmantojot ''--loadclasses'' # opcija. # Noklusējuma vērtība ir '$confdir/classes.txt'. classfile = $vardir/classes.txt
# Kur puppetd kešatmiņā saglabā vietējo konfigurāciju. Un # paplašinājums, kas norāda kešatmiņas formātu, tiek pievienots automātiski. # Noklusējuma vērtība ir '$confdir/localconfig'. localconfig = $vardir/localconfig
serveris = puppetmaster.leju.com atskaite = patiess klausīties = patiesi
[root@puppetclient lelle]# vi namespaceauth.conf [leļļu skrējējs] atļaut puppetmaster.leju.com atļaut *.leju.com
[root@puppetclient lelle]# vi auth.conf Pievienot atļaut * pēdējai rindiņai ...... ceļš / Auth jebkurš atļaut *
[root@puppetclient lelle]# cd Izpildīt marioneti: [root@puppetclient ~]# lelle --noop --test --trace --debug Ja Puppet Master nav iestatīts: autosign=true, tas ir jāizpilda Puppet Master: [root@puppetmaster ~]# leļļu sertifikāts -l puppetclient.leju.com [root@puppetmaster ~]# leļļu sertifikāts -s puppetclient.leju.com Parakstiet puppetclient.leju.com šādi. Pēc tam atgriezieties pie klienta, lai izpildītu šeit: [root@puppetclient ~]# lelle --noop --test --trace --debug Pievienojieties --noop, konfigurācija netiks īsti piemērota klientam, galvenokārt tiek izmantota testēšanai, lai redzētu, vai izdrukā nav kļūdu, un izpildīt bez kļūdām: [root@puppetclient ~]# lelle --tests --trace --atkļūdošana
Skatīt dokumentu: [root@puppetclient ~]# ll /tmp/ Kopā 8 -rw-r--r-- 1 saknes sakne 11 februāris 25 22:35 test.txt Dokuments ir izsniegts.
Ir iespējams arī virzīt uz Puppet Master: [root@puppetmaster ~]# leļļu sitiens -d --saimnieks puppetclient.leju.com Aktivizēšanas puppetclient.leju.com Statusa iegūšana Statuss ir panākumi puppetclient.leju.com pabeigts ar izejas kodu 0 Pabeigts Atgriežot skaitli 0, tiek norādīts, ka klienta marionete ir veiksmīgi aktivizēta.
Iestatiet leļļu automātiskās palaišanas režīmā: chkconfig --līmenis 2345 lelle ieslēgta
Modificējiet leļļu pārzini, lai izmantotu pasažieru Pasažieris ir Apache 2.x paplašinājums, lai palaistu Rails vai Rack lietojumprogrammas Apache. puppetmaster izmanto WEBrick, lai nodrošinātu failu pakalpojumus pēc noklusējuma, ja jums ir daudz leļļu klientu, puppetmaster failu pakalpojuma veiktspēja būs slikta, lai padarītu puppetmaster stabilāku, tāpēc izmantojiet Apache, lai nodrošinātu failu pakalpojumus.
Uzstādīšana: [root@puppetmaster ~]# yum install httpd httpd-devel ruby-devel rubygems Pasažieris 2.2.2 RHEL5 darbojas labi. Pievienojiet foreman.repo repozitoriju: [root@puppetmaster ~]# vi /etc/yum.repos.d/foreman.repo [meistars] name=Foreman stabils repozitorijs baseurl=http://yum.theforeman.org/stable gpgcheck=0 iespējots=1 [root@puppetmaster ~]# yum instalēt rubygem-passenger-2.2.2-1 [root@puppetmaster ~]# rubygem-rack-1.0.1-1 [root@puppetmaster ~]# pasažieru instalēšana-apache2-module
Apache SSL moduļa instalēšana: [root@puppetmaster ~]# yum instalēt mod_ssl
Lai konfigurētu Puppet Rack lietojumprogrammu: mkdir -p /etc/lelle/plaukts/leļļu meistars/ mkdir /etc/lelle/plaukts/leļļu meistars/publisks /etc/lelle/plaukts/leļļu meistars/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 lelle /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 PasažierisRubīns /usr/bin/rubīns PasažierisMaxPoolIzmērs 30 Pasažieru baseinsDīkstāves laiks 1500 Pasažieru maksimumsPieprasījumi 1000 Pasažieru statistikaDroseļvārsta likme 120 RackAutoDetect izslēgts Sliežu automātiskā noteikšana izslēgta
[root@puppetmaster ~]# vi /etc/httpd/conf.d/puppetmasterd.conf # jūs, iespējams, vēlaties noregulēt šos iestatījumus Pasažieru augsta veiktspēja ieslēgta Pasažieru maks.BaseinsIzmērs 12 Pasažieru baseinsDīkstāves laiks 1500 # Pasažieru MaxPieprasījumi 1000 Pasažieru statistikaDroseļvārsta likme 120 RackAutoDetect izslēgts Sliežu automātiskā noteikšana izslēgta
Klausīties 8140
<VirtualHost *:8140> SSLEngine ieslēgts 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 # Ja Apache sūdzas par nederīgiem parakstiem CRL, varat mēģināt atspējot # CRL pārbaude, komentējot nākamo rindu, bet tas nav ieteicams. SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem SSLVerifyClient pēc izvēles SSLVerifyDepth 1 SSLOptions +StdEnvVars
# Šādas klienta galvenes ļauj vienai un tai pašai konfigurācijai strādāt ar mārciņu. RequestHeader kopa X-SSL-Subject %{SSL_CLIENT_S_DN}e RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e RequestHeader kopa X-Client-Verify %{SSL_CLIENT_VERIFY}e
DocumentRoot /etc/puppet/rack/puppetmasterd/public/ RackBaseURI / <Direktorijs /etc/puppet/rack/puppetmasterd/> Opcijas Nav AllowOverride Nav Pasūtīt atļaut,noraidīt atļaut no visiem </Directory> </VirtualHost>
Modificējiet leļļu meistara konfigurācijas failu, lai pievienotu šādas divas rindiņas: [root@puppetmaster ~]# vi /etc/puppet/puppet.conf [meistars] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY
Modificēt /etc/sysconfig/puppetmaster: [root@puppetmaster ~]# vi /etc/sysconfig/puppetmaster # Beigās pievienojiet šādu rindu: PUPPETMASTER_EXTRA_OPTS="--atskaišu krātuve" Ja jums ir jāziņo gan meistaram, gan leļļu panelim, pievienojiet šādu rindu: PUPPETMASTER_EXTRA_OPTS="--atskaišu veikals, meistars, puppet_dashboard"
Pārtrauciet leļļu meistara pakalpojumu un sāciet apache pakalpojumu: [root@puppetmaster ~]# /etc/init.d/puppetmaster stop [root@puppetmaster ~]# /etc/init.d/httpd sākums
Boot nestartē puppetmaster pakalpojumu, boot sāk httpd pakalpojumu: [root@puppetmaster ~]# chkconfig --līmenis 2345 leļļu meistars izslēgts [root@puppetmaster ~]# chkconfig --level 2345 httpd on
Pārliecinieties, vai ir iespējots ports 8140: [root@puppetmaster ~]# netstat -tunlp |grep 8140 tcp 0 0 :::8140 :::* KLAUSĪTIES 9834/httpd
Pārbaudiet klienta pusē, lai redzētu, vai kļūdu žurnāls ir izdrukāts: [root@puppetclient ~]# lelle --tests --trace --atkļūdošana |