1. Sissejuhatus nukumaailmale
Süsteemiadministraatorid on sageli kinni korduvate ülesannete jadades: pakettide uuendamine, konfiguratsioonifailide, süsteemiteenuste, cron-ülesannete haldamine, uute konfiguratsioonide lisamine, vigade parandamine jne. Need ülesanded on sageli korduvad ja ebaefektiivsed ning esimene lahendus nende lahendamisel on nende automatiseerimine, mistõttu ilmuvad kohandatud skriptid. Keskkonna keerukuse tõttu arendatakse korduvalt kohandatud skripte ja rakendusi ning neid on raske mitmele platvormile sobitada ning paindlikkust ja funktsionaalsust on raske garanteerida, mistõttu on tekkinud automatiseeritud konfiguratsioonihalduse tööriistad nagu Puppet.
Avatud lähtekoodiga maailmas on valida paljude konfiguratsioonitööriistade vahel ning mõned peamised tooted selles valdkonnas on:
Puppet (http://puppet.reductivelabs.com/): Ruby keeles kirjutatud konfiguratsioonihaldustööriist, mis kasutab C/S arhitektuuri kliendi konfigureerimiseks deklaratiivses keeles. Cfengine (http://www.cfengine.org): Üks esimesi avatud lähtekoodiga konfiguratsioonitööriistu, mis ilmus 1993. aastal, on ka C/S arhitektuur, mida tavaliselt kasutatakse haridusasutustes. LCFG(http://www.lcfg.org/): Konfiguratsioonihaldustööriist C/S arhitektuuridele, mis kasutab XML-i konfiguratsioonide määratlemiseks. Bcfg2: Pythonis kirjutatud C/S arhitektuuri konfiguratsioonihaldustööriist, mis kasutab spetsifikatsioone ja kliendi vastuseid sihthosti konfigureerimiseks.
See dokument on pühendatud Puppet'i kasutamisele oma hosti, rakenduste, taustaprogrammide ja erinevate teenuste haldamiseks.
Puppetist:
1. Milleks Puppeti kasutatakse?
Puppet on avatud lähtekoodiga Ruby-põhine süsteemikonfiguratsiooni haldustööriist, mis tugineb C/S juurutusarhitektuurile. Peamine arendaja on Luke Kanies, kes järgib GPLv2 autoriõiguse litsentsi. Alates 1997. aastast on Kanies olnud seotud UNIX-süsteemi haldusega ning Puppeti arendamine sai alguse sellest kogemusest. Kuna Kanies ei olnud rahul olemasolevate konfiguratsioonitööriistadega, hakkas ta arendama tööriistu Reductive laboris aastatel 2001–2005. Peagi andis Reductive Labs välja oma lipulaeva Puppet.
2. Pupputi omadused
Paljud süsteemikonfiguratsioonihalduse tööriistad töötavad väga sarnaselt, näiteks cfengine. Mis teeb Puppeti ainulaadseks?
Puppeti süntaks võimaldab luua eraldi skripti, et ehitada kasutaja kõigile sihthostidele. Kõik sihthostid tõlgendavad ja käivitavad moodulit kordamööda, kasutades kohaliku süsteemi süntaksit. Näiteks, kui see konfiguratsioon täidetakse Red Hat serveris, loo kasutaja käsuga useradd; Kui see konfiguratsioon täidetakse FreeBSD hostil, kasutatakse adduser-käsku.
Veel üks tähelepanuväärne aspekt Puppeti juures on selle paindlikkus. Avatud lähtekoodiga tarkvara olemuse tõttu saad vabalt kätte Puppeti lähtekoodi ning kui tekivad probleemid ja sul on võimalus, saad Puppet'i koodi muuta või täiustada vastavalt oma keskkonnale. Lisaks jätkavad kogukonna arendajad ja annetajad Puppeti võimekuse täiustamist. Suur arendajate ja kasutajate kogukond on samuti pühendunud Puppetile dokumentatsiooni ja tehnilise toe pakkumisele.
Nukk on samuti lihtne skaleerida. Kohandatud pakettide tugi ja spetsiaalsed süsteemikeskkonna konfiguratsioonid saab kiiresti ja lihtsalt lisada Puppeti installerisse.
3. Nuku töörežiim
Puppet on C/S arhitektuuri konfiguratsioonihaldustööriist, mis paigaldab nukuserveri paketi (tuntud kui Puppet master) keskserverile. Paigalda Puppet klienditarkvara (nimega Puppet Client) sihthostile, mida tuleb hallata. Kui klient ühendub Puppet masteriga, kompileeritakse Puppet masteril määratletud konfiguratsioonifail ja käivitatakse seejärel kliendil. Vaikimisi suhtleb iga klient serveriga iga poole tunni tagant, et kinnitada konfiguratsiooniteabe uuendamist. Kui konfiguratsiooniteave või konfiguratsiooniteave on muutunud, kompileeritakse konfiguratsioon uuesti ja avaldatakse igale kliendile täitmiseks. Samuti saad aktiivselt käivitada serveri konfiguratsiooniinfo uuenduse, sundides iga klienti seda seadistama. Kui kliendi konfiguratsiooniinfot muudetakse, saab ta serverilt algse konfiguratsiooni saada, et seda parandada.
Konfiguratsiooni haldus: Nukupaigaldus ja kasutamine (1)
4. Puppeti tulevik
Lõpuks on Puppet noor tööriist, mis on endiselt arendamisel ja arendamisel. Nukukogukond kasvab kiiresti ning pidevalt lisatakse palju uusi ideid, mis sunnivad iga päev arendama, uuendusi ja mooduleid esitama.
2. Konfiguratsioon ja paigaldus (Puppet 2.6.4 CentOS 5.4 paigaldus):
Seadista repositoorium nukuserveris ja kliendis: 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 Lisa: [epel-nukk] nimi=epel nukk baseurl=http://tmz.fedorapeople.org/repo/puppet/epel/5/$basearch/ enabled=0 gpgcheck=0
Lisa repository puppet.repo: [root@puppetmaster ~]# vi /etc/yum.repos.d/puppet.repo [nukulaborid] name=Puppet Labs Paketid baseurl=http://yum.puppetlabs.com/base/ enabled=0 gpgcheck=0
Nukumeistri paigaldus: [root@puppetmaster ~]# yum --enablerepo=epel,epel-puppet install puppet-server
Muuda hoste ja lisa järgmised kaks kirjet: [root@puppetmaster ~]# vi /etc/hostid 192.168.0.10 puppetmaster.leju.com nukk 192.168.0.100 puppetclient.leju.com
Puppeti seadistamine: [root@puppetmaster ~]# cd /etc/nukk/ [root@puppetmaster nuku]# vi nuku.conf
[peamine] # Nukulogi kataloog. # Vaikimisi väärtus on '$vardir/log'. logdir = /var/log/nukk
# Kus hoitakse Puppet PID faile. # Vaikimisi väärtus on '$vardir/run'. rundir = /var/run/nukk
# Kus hoitakse SSL-sertifikaate. # Vaikimisi väärtus on '$confdir/ssl'. ssldir = $vardir/ssl
[agent] # Fail, kuhu puppetd salvestab klasside nimekirja # seotud saadud konfiguratsiooniga. Saab laadida # eraldi ''nukuke'' käivitatav fail, kasutades ''--loadclasses'' # võimalus. # Vaikimisi väärtus on '$confdir/classes.txt'. classfile = $vardir/classes.txt
# Kus nukk salvestab kohaliku konfiguratsiooni. An # laiendus, mis näitab, et vahemälu formaat lisatakse automaatselt. # Vaikimisi väärtus on '$confdir/localconfig'. localconfig = $vardir/localconfig server = puppetmaster.leju.com aruanne = tõene kuula = tõene
[meister] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY autosign = tõene aruanded = pood
[root@puppetmaster nuku]# vi fileserver.conf [failid] path /etc/puppet/files luba *
[moodulid] luba *
[pluginad] luba *
[root@puppetmaster nuku]# mkdir /jne/nukk/failid
[root@puppetmaster nuku]# CD ilmub/ Loo site.pp, mis on nukukirje konfiguratsioonifail: [root@puppetmaster manifesteerib]# vi site.pp Impordi "modules.pp" Impordi "roles.pp" Impordi "nodes.pp"
# Standardtüüpide üldised seaded Exec { path => "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" }
filebucket { main: server => "puppetmaster.leju.com" } Fail { varukoopia => peamine }
Loo modules.pp moodulite importimiseks: [root@puppetmaster manifests]# vi modules.pp Impordi "test"
Create roles.pp serveri rollide määratlemiseks: [root@puppetmaster manifesteerib]# vi roles.pp class baseclass { Include test
}
Loo nodes.pp serverisõlmede seadistamiseks: [root@puppetmaster manifesteerib]# vi nodes.pp sõlm 'basenode' { include baseclass
}
sõlm 'puppetclient.leju.com' pärib basenode { silt ("test")
}
sõlm 'puppetmaster.leju.com' pärib basenode'i { silt ("test")
}
[root@puppetmaster ilmub]# cd .. [root@puppetmaster nuku]# mkdir moodulid Loo testmoodul: [root@puppetmaster moodulid]# mkdir -p test/manifestid/ [root@puppetmaster moodulid]# mkdir test/failid/ [root@puppetmaster moodulid]# CD test/failid/ [root@puppetmaster failid]# vi test.txt Testliin! [root@puppetmaster failid]# CD .. /manifesteerib/ Loo testklass, mis edastab faili kliendile: [root@puppetmaster avaldub]# vi init.pp klassitest { faili { "/tmp/test.txt": ensure => olemas, grupp => "juur", omanik => "juur", mode => "0644", allikas => "puppet:///test/test.txt" }
}
Puppet Masteri käivitamine: [root@puppetmaster ilmub]# /etc/init.d/puppetmaster start Veendu, et port 8140 on avatud.
Puppet kliendi paigaldus: [root@puppetclient ~]# yum --enablerepo="epel,epel-nukk" paigalda nukk
Muuda hoste ja lisa järgmised kaks kirjet: [root@puppetclient ~]# vi /etc/hostid 192.168.0.10 puppetmaster.leju.com nukk 192.168.0.100 puppetclient.leju.com
Nuku seadistamine: [root@puppetclient ~]# CD /jne/nukk/ [root@puppetclient nuku]# vi nuku.conf [peamine] # Nukulogi kataloog. # Vaikimisi väärtus on '$vardir/log'. logdir = /var/log/nukk
# Kus hoitakse Puppet PID faile. # Vaikimisi väärtus on '$vardir/run'. rundir = /var/run/nukk
# Kus hoitakse SSL-sertifikaate. # Vaikimisi väärtus on '$confdir/ssl'. ssldir = $vardir/ssl
[agent] # Fail, kuhu puppetd salvestab klasside nimekirja # seotud saadud konfiguratsiooniga. Saab laadida # eraldi ''nukuke'' käivitatav fail, kasutades ''--loadclasses'' # võimalus. # Vaikimisi väärtus on '$confdir/classes.txt'. classfile = $vardir/classes.txt
# Kus nukk salvestab kohaliku konfiguratsiooni. An # laiendus, mis näitab, et vahemälu formaat lisatakse automaatselt. # Vaikimisi väärtus on '$confdir/localconfig'. localconfig = $vardir/localconfig
server = puppetmaster.leju.com aruanne = tõene kuula = tõene
[root@puppetclient nuku]# vi namespaceauth.conf [nukujooksja] Luba puppetmaster.leju.com luba *.leju.com
[root@puppetclient nukk]# vi autor.conf Lisa viimasele reale luba * ...... tee / autentimine luba *
[root@puppetclient nuku]# CD Täida nukk: [root@puppetclient ~]# nukk --noop --test --jälgi --silus Kui Puppet Master ei määra: autosign=true, tuleb see käivitada Puppet Masteris: [root@puppetmaster ~]# nukutunnistus -l puppetclient.leju.com [root@puppetmaster ~]# nukutunnistus -s puppetclient.leju.com Kirjuta puppetclient.leju.com nii. Seejärel mine tagasi kliendi juurde ja käivita siin: [root@puppetclient ~]# nukk --noop --test --jälgi --silus Liitu --noop, konfiguratsiooni ei rakendata tegelikult kliendil, peamiselt testimiseks, et näha, kas väljatrükis on vigu, ja käivitatakse ilma vigadeta: [root@puppetclient ~]# nukk --test --jälg --silus
Vaata dokumenti: [root@puppetclient ~]# ll /tmp/ kokku 8 -rw-r--r-- 1 juurjuur 11. veebruar 25 22:35 test.txt Dokument on välja antud.
Võimalik on ka Puppet Masteri peale suruda: [root@puppetmaster ~]# nukulöök -d --host puppetclient.leju.com Vallandav puppetclient.leju.com Staatuse saamine Staatus on edu puppetclient.leju.com lõpetanud väljumiskoodiga 0 Lõpetatud Tagastatud 0 näitab, et kliendi nuku käivitati edukalt.
Pane nukk automaatseks käivitumiseks: chkconfig --tase 2345 nukk peal
Muuda Puppetmaster, et kasutada Passenger Passenger on Apache 2.x laiendus, mis võimaldab Apache raudtee- või rack-rakendusi käivitada. puppetmaster kasutab WEBricki failiteenuste pakkumiseks vaikimisi; kui sul on palju nukukliente, on puppetmasteri failiteenuse jõudlus kehv, et muuta puppetmaster tugevamaks, seega kasuta failiteenuste pakkumiseks Apache.
Paigaldus: [root@puppetmaster ~]# yum install httpd httpd-devel ruby-devel rubygems Passenger 2.2.2 RHEL5 töötab hästi. Add foreman.repo repository: [root@puppetmaster ~]# vi /etc/yum.repos.d/foreman.repo [töödejuhataja] name=Foremani stabiilne hoidla 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 ~]# reisija-paigalda-apache2-moodul
Apache SSL mooduli paigaldamine: [root@puppetmaster ~]# mmm, paigalda mod_ssl
Puppet rack rakenduse seadistamiseks: mkdir -p /jne/nukk/rack/puppetmasterd/ mkdir /etc/nuku/rack/puppetmasterd/avalik /jne/nuku/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 ReisijaRuby /usr/bin/ruby ReisijaMaxPoolSuurus 30 Reisijate basseinTühikäigu aeg 1500 PassengerMaxRequests 1000 ReisijaStatThrottleRate 120 RackAutoDetect välja lülitatud RailsAutoDetection välja lülitatud
[root@puppetmaster ~]# vi /etc/httpd/conf.d/puppetmasterd.conf # Sa tahad ilmselt neid seadeid häälestada PassengerHighPerformance peal ReisijaMaxPoolSuurus 12 Reisijate basseinTühikäigu aeg 1500 # PassengerMaxRequests 1000 ReisijaStatThrottleRate 120 RackAutoDetect välja lülitatud RailsAutoDetection välja lülitatud
Kuula 8140
<VirtualHost *:8140> SSLEngine on SSLProtocol -ALL +SSLv3 +TLSv1 SSLCipherSuite KÕIK:! 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 # Kui Apache kurdab CRL-is kehtetute allkirjade üle, võid proovida keelata # CRL-i kontrollimine, kommenteerides järgmist rida, aga seda ei soovitata. SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem SSLVerifyClient valikuline SSLVerifyDepth 1 SSLOptions +StdEnvVars
# Järgnevad kliendipäised võimaldavad sama konfiguratsiooni Poundiga töötada. 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 /jne/nukk/rack/puppetmasterd/public/ RackBaseURI / <Kataloog /jne/nukk/rack/nukumasterd/> Valikud puuduvad AllowOverride None Käsk lubada, keela luba kõigilt </Directory> </VirtualHost>
Muuda nukumeistri konfiguratsioonifaili, et lisada järgmised kaks rida: [root@puppetmaster ~]# vi /etc/puppet/puppet.conf [meister] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY
Muuda /etc/sysconfig/puppetmaster: [root@puppetmaster ~]# vi /etc/sysconfig/puppetmaster # Lisa lõppu järgmine rida: PUPPETMASTER_EXTRA_OPTS="--aruannete pood" Kui pead aru andma nii töödejuhatajale kui ka nukujuhtpaneelile, lisa järgmine rida: PUPPETMASTER_EXTRA_OPTS="--teatab poest, töödejuhataja, puppet_dashboard"
Peata nukumeistri teenistus ja alusta apache-teenistust: [root@puppetmaster ~]# /etc/init.d/puppetmaster peatus [root@puppetmaster ~]# /etc/init.d/httpd start
Boot ei käivita puppetmasteri teenust, käivitamine käivitab httpd teenuse: [root@puppetmaster ~]# chkconfig --tase 2345 nukumeister välja lülitatud [root@puppetmaster ~]# chkconfig --tase 2345 httpd peal
Veendu, et port 8140 on lubatud: [root@puppetmaster ~]# netstat -tunlp |grep 8140 TCP 0 0 :::8140 :::* KUULA 9834/HTTPD
Testi kliendi poolel, kas vealogi on trükitud: [root@puppetclient ~]# nukk --test --jälg --silus |