1. Johdatus nukkeen
Järjestelmänvalvojat ovat usein jumissa toistuvien tehtävien parissa: pakettien päivittämisessä, konfiguraatiotiedostojen, järjestelmäpalveluiden, cron-tehtävien, uusien asetusten lisäämisessä, bugien korjaamisessa jne. Nämä tehtävät ovat usein toistuvia ja tehottomia, ja ensimmäinen ratkaisu on automatisoida ne, jolloin mukautetut skriptit ilmestyvät. Ympäristön monimutkaisuuden vuoksi räätälöityjä skriptejä ja sovelluksia kehitetään toistuvasti, ja ne ovat vaikeita sovittaa useille alustoille, ja joustavuutta ja toiminnallisuutta on vaikea taata, joten automatisoidut konfiguraationhallintatyökalut kuten Puppet ovat syntyneet.
Avoimen lähdekoodin maailmassa on monia konfigurointityökaluja, joista valita, ja tämän alan keskeisiä tuotteita ovat:
Puppet (http://puppet.reductivelabs.com/): Ruby-kielellä kirjoitettu konfiguraationhallintatyökalu, joka käyttää C/S-arkkitehtuuria konfiguroidakseen asiakkaan deklaratiivisella kielellä. Cfengine (http://www.cfengine.org): Yksi ensimmäisistä avoimen lähdekoodin konfigurointityökaluista, julkaistu vuonna 1993, se on myös C/S-arkkitehtuuri, jota käytetään yleensä oppilaitoksissa. LCFG(http://www.lcfg.org/): Konfiguraationhallintatyökalu C/S-arkkitehtuureille, joka käyttää XML:ää konfiguraation määrittämiseen. Bcfg2: Pythonilla kirjoitettu konfiguraationhallintatyökalu C/S-arkkitehtuurille, joka käyttää määrittelyjä ja asiakasvastauksia kohdepalvelimen konfigurointiin.
Tämä dokumentti on omistettu kuvaamaan, miten Puppetia käytetään isäntäkoneen, sovellusten, taustaohjelmien ja erilaisten palveluiden hallintaan.
Tietoa Puppetista:
1. Mihin Puppetia käytetään?
Puppet on avoimen lähdekoodin Ruby-pohjainen järjestelmän konfiguraation hallintatyökalu, joka perustuu C/S-käyttöönoton arkkitehtuuriin. Pääkehittäjä on Luke Kanies, joka noudattaa GPLv2-tekijänoikeuslisenssiä. Vuodesta 1997 lähtien Kanies on ollut mukana UNIX-järjestelmän hallinnassa, ja Puppetin kehitys sai alkunsa tästä kokemuksesta. Koska Kanies ei ollut tyytyväinen käytettävissä oleviin konfigurointityökaluihin, hän alkoi kehittää työkaluja Reductive-laboratoriossa vuosina 2001–2005. Pian Reductive Labs julkaisi lippulaivatuotteensa, Puppetin.
2. Pupputin ominaisuudet
Monet järjestelmän konfiguraation hallintatyökalut toimivat hyvin samalla tavalla, kuten cfengine. Mikä tekee Puppetista ainutlaatuisen?
Puppetin syntaksin avulla voit luoda erillisen skriptin, jolla voit rakentaa käyttäjän kaikille kohdeisännöillesi. Kaikki kohdeisännät tulkitsevat ja suorittavat moduulin vuorollaan paikallisen järjestelmän syntaksin mukaisesti. Esimerkiksi, jos tämä konfiguraatio suoritetaan Red Hat -palvelimella, luo käyttäjä useradd-komennolla; Jos tämä konfiguraatio suoritetaan FreeBSD-isäntällä, käytetään adduser-komentoa.
Toinen merkittävä piirre Puppetissa on sen joustavuus. Avoimen lähdekoodin ohjelmiston luonteen vuoksi voit vapaasti hankkia Puppetin lähdekoodin, ja jos kohtaat ongelmia ja sinulla on mahdollisuus, voit muokata tai parantaa Puppetin koodia ympäristöösi sopivaksi. Lisäksi yhteisön kehittäjät ja lahjoittajat jatkavat Puppetin kykyjen kehittämistä. Laaja kehittäjä- ja käyttäjäyhteisö on myös sitoutunut tarjoamaan dokumentaatiota ja teknistä tukea Puppetille.
Nukke on myös helppo skaalata. Mukautettu pakettituki ja erityiset järjestelmäympäristön asetukset voidaan lisätä nopeasti ja helposti Puppet -asennusohjelmaan.
3. Nuken toimintatila
Puppet on C/S-arkkitehtuurin konfiguraation hallintatyökalu, joka asentaa nukke-palvelinpaketin (tunnetaan nimellä Puppet master) keskitetylle palvelimelle. Asenna Puppet client -ohjelmisto (nimeltään Puppet Client) kohdepalvelimelle, jota täytyy hallita. Kun asiakas yhdistää Puppet masteriin, Puppet-masterille määritelty konfiguraatiotiedosto käännetään ja suoritetaan asiakkaalla. Oletuksena jokainen asiakas kommunikoi palvelimen kanssa puolen tunnin välein vahvistaakseen konfiguraatiotietojen päivityksen. Jos konfiguraatiotiedot tai konfiguraatiotiedot ovat muuttuneet, konfiguraatio käännetään uudelleen ja julkaistaan jokaiselle asiakkaalle suoritettavaksi. Voit myös aktiivisesti käynnistää palvelimen konfiguraatiotietojen päivityksen pakottaaksesi jokaisen asiakkaan konfiguroimaan sen. Jos asiakkaan konfiguraatiotiedot muuttuvat, se voi hakea alkuperäisen konfiguraation palvelimelta korjatakseen ne.
Konfiguraation hallinta: Nukkejen asennus ja käyttö (1)
4. Puppetin tulevaisuus
Lopuksi, Puppet on nuori työkalu, joka on vielä kehitteillä ja kehityksessä. Nukkeyhteisö kasvaa nopeasti, ja monia uusia ideoita otetaan jatkuvasti mukaan, mikä kannustaa kehitykseen, päivityksiin ja moduuleihin päivittäin.
2. Konfigurointi ja asennus (Puppet 2.6.4 CentOS 5.4 -asennus):
Määritä tietovarasto nukkepalvelimella ja asiakkaalla: 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 Lisää: [epel-nukke] nimi=epel-nukke baseurl=http://tmz.fedorapeople.org/repo/puppet/epel/5/$basearch/ enabled=0 gpgcheck=0
Lisää repositorio puppet.repo: [root@puppetmaster ~]# vi /etc/yum.repos.d/puppet.repo [nukkeja] name=Puppet Labs -paketit baseurl=http://yum.puppetlabs.com/base/ enabled=0 gpgcheck=0
Nukkemestarin asennus: [root@puppetmaster ~]# yum --enablerepo=epel,epel-puppet install puppet-server
Muokkaa isäntiä ja lisää seuraavat kaksi tietuetta: [root@puppetmaster ~]# vi /etc/isännät 192.168.0.10 puppetmaster.leju.com nukke 192.168.0.100 puppetclient.leju.com
Nuken konfigurointi: [root@puppetmaster ~]# cd /etc/nukke/ [root@puppetmaster nukke]# vi nukke.conf
[pääasiallinen] # Nukkekirjahakemisto. # Oletusarvo on '$vardir/log'. logdir = /var/log/nukke
# Missä Puppet PID -tiedostoja säilytetään. # Oletusarvo on '$vardir/run'. rundir = /var/juokse/nukke
# Missä SSL-sertifikaatteja säilytetään. # Oletusarvo on '$confdir/ssl'. ssldir = $vardir/ssl
[agentti] # Tiedosto, johon puppetd tallentaa luettelon luokista # liitetty haettuun konfiguraatioon. Voidaan ladata sisään # erillinen ''nukke''-suoritettava tiedosto käyttäen ''-loadclasses'' # vaihtoehto. # Oletusarvo on '$confdir/classes.txt'. classfile = $vardir/classes.txt
# Missä nukke tallentaa paikallisen kokoonpanon. An # laajennus, joka osoittaa, että välimuistimuoto lisätään automaattisesti. # Oletusarvo on '$confdir/localconfig'. localconfig = $vardir/localconfig palvelin = puppetmaster.leju.com raportti = tosi kuuntele = tosi
[mestari] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY autosign = tosi raportit = kauppa
[root@puppetmaster nukke]# vi fileserver.conf [tiedostot] path /etc/puppet/files salli *
[moduulit] salli *
[pluginit] salli *
[root@puppetmaster nukke]# mkdir /etc/nukke/tiedostot
[root@puppetmaster nukke]# CD ilmestyy/ Luo site.pp, joka on nukkemerkinnän konfiguraatiotiedosto: [root@puppetmaster manifestoi]# vi site.pp Tuo "modules.pp" tuo "roles.pp" Tuo "nodes.pp"
# Yleiset asetukset standardityypeille Exec { path => "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" }
filebucket { pää: palvelin => "puppetmaster.leju.com" } Tiedosto { backup => main }
Luo modules.pp moduulien tuomiseksi: [root@puppetmaster manifestit]# vi modules.pp tuo "testi"
Luo roles.pp palvelimen roolien määrittämiseksi: [root@puppetmaster manifestoi]# vi roles.pp class baseclass { include testi
}
Luo nodes.pp määrittääksesi palvelinsolmut: [root@puppetmaster manifestoi]# vi nodes.pp solmu 'basenode' { include baseclass
}
solmu 'puppetclient.leju.com' perii basenode { tag("testi")
}
solmu 'puppetmaster.leju.com' perii basenoden { tag("testi")
}
[root@puppetmaster ilmestyy]# cd .. [root@puppetmaster nukke]# mkdir-moduulit Luo testimoduuli: [root@puppetmaster moduulit]# mkdir -p testi/manifestit/ [root@puppetmaster moduulit]# mkdir testi/tiedostot/ [root@puppetmaster moduulit]# cd-testi/tiedostot/ [root@puppetmaster tiedostot]# vi test.txt Testilinja! [root@puppetmaster tiedostot]# cd .. /manifestoi/ Luo testiluokka, joka toimittaa tiedoston asiakkaalle: [root@puppetmaster ilmenee]# vi init.pp luokkatesti { tiedosto { "/tmp/test.txt": ensure => läsnä, ryhmä => "juuri", omistaja => "juuri", mode => "0644", lähde => "puppet:///test/test.txt" }
}
Puppet Masterin lanseeraus: [root@puppetmaster ilmestyy]# /etc/init.d/puppetmaster aloita Varmista, että portti 8140 on päällä.
Nukkeasiakasasennus: [root@puppetclient ~]# yum --enablerepo="epel,epel-nukke" asenna nukke
Muokkaa isäntiä ja lisää seuraavat kaksi tietuetta: [root@puppetclient ~]# vi /etc/isännät 192.168.0.10 puppetmaster.leju.com nukke 192.168.0.100 puppetclient.leju.com
Nuken konfigurointi: [root@puppetclient ~]# cd /etc/puppet/ [root@puppetclient nukke]# vi nukke.conf [pääasiallinen] # Nukkekirjahakemisto. # Oletusarvo on '$vardir/log'. logdir = /var/log/nukke
# Missä Puppet PID -tiedostoja säilytetään. # Oletusarvo on '$vardir/run'. rundir = /var/juokse/nukke
# Missä SSL-sertifikaatteja säilytetään. # Oletusarvo on '$confdir/ssl'. ssldir = $vardir/ssl
[agentti] # Tiedosto, johon puppetd tallentaa luettelon luokista # liitetty haettuun konfiguraatioon. Voidaan ladata sisään # erillinen ''nukke''-suoritettava tiedosto käyttäen ''-loadclasses'' # vaihtoehto. # Oletusarvo on '$confdir/classes.txt'. classfile = $vardir/classes.txt
# Missä nukke tallentaa paikallisen kokoonpanon. An # laajennus, joka osoittaa, että välimuistimuoto lisätään automaattisesti. # Oletusarvo on '$confdir/localconfig'. localconfig = $vardir/localconfig
palvelin = puppetmaster.leju.com raportti = tosi kuuntele = tosi
[root@puppetclient nukke]# vi namespaceauth.conf [nukkejuoksija] salli puppetmaster.leju.com salli *.leju.com
[root@puppetclient nukke]# vi auth.conf Lisää salli * viimeiselle riville ...... polku / Auth any salli *
[root@puppetclient nukke]# cd Toteuta nukke: [root@puppetclient ~]# nukke --noop --testi --jäljitys --debug Jos Puppet Master ei aseta: autosign=true, se täytyy suorittaa Puppet Masterissa: [root@puppetmaster ~]# nukkesertifikaatti -l puppetclient.leju.com [root@puppetmaster ~]# Nukkesertifikaatti -s puppetclient.leju.com Viittomalla puppetclient.leju.com näin. Palaa sitten asiakkaalle suorittamaan tästä: [root@puppetclient ~]# nukke --noop --testi --jäljitys --debug Liity --noop, konfiguraatiota ei oikeastaan sovelleta asiakkaalle, vaan käytetään pääasiassa testaukseen, jotta tulosteessa löytyykö virheitä, ja suoritus virheettömästi: [root@puppetclient ~]# nukke --testi --jäljitys --debug
Katso asiakirja: [root@puppetclient ~]# ll /tmp/ yhteensä 8 -rw-r--r-- 1 juurjuuri 11. helmikuuta 25 22:35 test.txt Asiakirja on julkaistu.
On myös mahdollista painostaa Puppet Masteria: [root@puppetmaster ~]# nukkepotku -d --isäntä puppetclient.leju.com Laukaiseva puppetclient.leju.com Statuksen saaminen Status on menestystä puppetclient.leju.com päättynyt exit-koodilla 0 Valmis Palautus 0 tarkoittaa, että asiakkaan nukke aktivoitiin onnistuneesti.
Aseta nukke käynnistymään automaattisesti: chkconfig --taso 2345 nukke päällä
Muokkaa Puppetmasteria käyttämään Passenger Passenger on Apache 2.x:n laajennus rails- tai rack-sovelluksiin Apacessa. Puppetmaster käyttää WEBrickiä tiedostopalveluiden tarjoamiseen oletuksena; jos sinulla on paljon nukkeasiakasta, Puppetmasterin tiedostopalvelu on heikko, jotta Puppetmasterin suorituskyky olisi kestävämpi, joten käytä Apachea tiedostopalveluiden tarjoamiseen.
Asennus: [root@puppetmaster ~]# yum install httpd httpd-devel ruby-devel rubygems Matkustaja 2.2.2 RHEL5 toimii hyvin. Add foreman.repo repository: [root@puppetmaster ~]# vi /etc/yum.repos.d/foreman.repo [työnjohtaja] name=Foremanin stabiilivarasto baseurl=http://yum.theforeman.org/stable gpgcheck=0 enabled=1 [root@puppetmaster ~]# yum asenna rubygem-passenger-2.2.2-1 [root@puppetmaster ~]# rubygem-rack-1.0.1-1 [root@puppetmaster ~]# matkustaja-asennus-apache2-moduuli
Apache SSL -moduulin asentaminen: [root@puppetmaster ~]# nam asenna mod_ssl
Puppet rack -sovelluksen konfigurointi: mkdir -p /etc/nukke/räkki/nukkemasterd/ mkdir /etc/nukke/räkki/puppetmasterd/julkinen /jne. nukke/räkki/nukkemasterd/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 MatkustajaRuby /usr/bin/ruby MatkustajaMaxPoolKoko 30 MatkustajaPoolIdleTime 1500 PassengerMaxRequests 1000 MatkustajaStatThrottleRate 120 RackAutoDetect pois päältä RailsAutoDetect pois päältä
[root@puppetmaster ~]# vi /etc/httpd/conf.d/puppetmasterd.conf # Todennäköisesti haluat säätää näitä asetuksia MatkustajaHighPerformance päällä MatkustajaMaxPoolKoko 12 MatkustajaPoolIdleTime 1500 # PassengerMaxRequests 1000 MatkustajaStatThrottleRate 120 RackAutoDetect pois päältä RailsAutoDetect pois päältä
Kuuntele 8140
<VirtualHost *:8140> SSLEngine päällä SSLProtocol -ALL +SSLv3 +TLSv1 SSLCipherSuite KAIKKI:! 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 # Jos Apache valittaa virheellisestä allekirjoituksesta CRL:ssä, voit kokeilla poistaa käytöstä # CRL-tarkistus kommentoimalla seuraavaa riviä, mutta tätä ei suositella. SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem SSLVerifyClient optional SSLVerifyDepth 1 SSLOptions +StdEnvVars
# Seuraavat asiakasotsikot mahdollistavat saman konfiguraation toimimisen Poundin kanssa. 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/nukke/rack/puppetmasterd/julkinen/ RackBaseURI / <Hakemisto /etc/nukke/rack/puppetmasterd/> Vaihtoehdot Ei AllowOverride None Käsky sallia, kieltä salli kaikilta </Directory> </VirtualHost>
Muokkaa nukkemestarin konfiguraatiotiedostoa lisäämällä seuraavat kaksi riviä: [root@puppetmaster ~]# vi /etc/puppet/puppet.conf [mestari] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY
Muokkaa /etc/sysconfig/puppetmasteria: [root@puppetmaster ~]# vi /etc/sysconfig/puppetmaster # Lisää seuraava rivi loppuun: PUPPETMASTER_EXTRA_OPTS="--raporttien kauppa" Jos sinun täytyy raportoida sekä työnjohtajalle että nukkekojelaudalle, lisää seuraava rivi: PUPPETMASTER_EXTRA_OPTS="--raportoi kaupasta, työnjohtajasta, puppet_dashboard"
Pysäytä nukkemestaripalvelu ja aloita apache-palvelu: [root@puppetmaster ~]# /etc/init.d/Puppetmaster pysähdy. [root@puppetmaster ~]# /etc/init.d/httpd start
Käynnistys ei käynnistä nukkemestaripalvelua, käynnistys käynnistää httpd-palvelun: [root@puppetmaster ~]# chkconfig --taso 2345 nukkemestari pois päältä [root@puppetmaster ~]# chkconfig --taso 2345 httpd päällä
Varmista, että portti 8140 on käytössä: [root@puppetmaster ~]# netstat -tunlp |grep 8140 TCP 0 0 :::8140 :::* KUUNTELE 9834/HTTPD
Testaa asiakaspuolella, onko virheloki tulostettu: [root@puppetclient ~]# nukke --testi --jäljitys --debug |