1. Úvod do bábok
Systémoví administrátori sú často uviaznutí v sérii opakujúcich sa úloh: aktualizácia balíkov, správa konfiguračných súborov, systémové služby, cron úlohy, pridávanie nových konfigurácií, oprava chýb a podobne. Tieto úlohy sú často opakujúce sa a neefektívne, a prvou reakciou na ich riešenie je ich automatizácia, takže sa objavia vlastné skripty. Vzhľadom na zložitosť prostredia sa opakovane vyvíjajú vlastné skripty a aplikácie, ktoré je ťažké prispôsobiť viacerým platformám, a flexibilitu a funkčnosť je ťažké zaručiť, preto sa objavili automatizované nástroje na správu konfigurácie ako Puppet.
Vo svete open source je na výber mnoho konfiguračných nástrojov a niektoré z kľúčových produktov v tejto oblasti sú:
Puppet (http://puppet.reductivelabs.com/): Nástroj na správu konfigurácie napísaný v Ruby, ktorý využíva architektúru C/S na konfiguráciu klienta v deklaratívnom jazyku. Cfengine (http://www.cfengine.org): Jeden z prvých open source konfiguračných nástrojov, vydaný v roku 1993, je tiež C/S architektúrou, zvyčajne používanou vo vzdelávacích inštitúciách. LCFG(http://www.lcfg.org/): Nástroj na správu konfigurácie pre C/S architektúry, ktorý používa XML na definovanie konfigurácií. Bcfg2: Nástroj na správu konfigurácie pre architektúru C/S napísaný v Pythone, ktorý používa špecifikácie a odpovede klientov na konfiguráciu cieľového hostiteľa.
Tento dokument je venovaný popisu, ako používať Puppet na správu vášho hostiteľa, aplikácií, programov na pozadí a rôznych služieb.
O Puppet:
1. Na čo sa Puppet používa?
Puppet je open-source nástroj na správu konfigurácie systému založený na Ruby, ktorý sa spolieha na architektúru nasadenia C/S. Hlavným vývojárom je Luke Kanies, ktorý používa licenciu na autorské práva GPLv2. Od roku 1997 sa Kanies podieľa na správe systému UNIX a vývoj Puppetu vychádzal z tejto skúsenosti. Keďže Kanies nebol spokojný s dostupnými konfiguračnými nástrojmi, začal v rokoch 2001 až 2005 vyvíjať nástroje v reduktívnom laboratóriu. Čoskoro Reductive Labs vydali svoj vlajkový produkt, Puppet.
2. Vlastnosti pupputu
Mnohé nástroje na správu konfigurácie systému fungujú veľmi podobne, napríklad cfengine. Čo robí Puppet jedinečným?
Syntax Puppetu vám umožňuje vytvoriť samostatný skript na vytvorenie používateľa na všetkých cieľových hostiteľoch. Všetky cieľové hostiteľky budú modul interpretovať a vykonávať postupne pomocou syntaxe použiteľnej pre lokálny systém. Napríklad, ak sa táto konfigurácia vykoná na serveri Red Hat, vytvorte používateľa pomocou príkazu useradd; Ak sa táto konfigurácia vykoná na FreeBSD hoste, použije sa príkaz adduser.
Ďalším pozoruhodným aspektom Puppetu je jeho flexibilita. Vzhľadom na povahu open source softvéru môžete voľne získať zdrojový kód Puppetu a ak narazíte na problémy a máte túto možnosť, môžete upraviť alebo vylepšiť kód Puppetu podľa svojho prostredia. Okrem toho komunitní vývojári a darcovia naďalej zvyšujú možnosti Puppetu. Veľká komunita vývojárov a používateľov sa tiež zaviazala poskytovať dokumentáciu a technickú podporu pre Puppet.
Puppet sa tiež ľahko škáluje. Podpora vlastných balíkov a konfigurácie špeciálneho systémového prostredia je možné rýchlo a jednoducho pridať do inštalátora Puppetu.
3. Pracovný režim bábky
Puppet je nástroj na správu konfigurácie architektúry C/S, ktorý inštaluje balík puppet-server (známy ako Puppet master) na centrálny server. Nainštalujte klientský softvér Puppet (nazývaný Puppet Client) na cieľovom hostiteľovi, ktorý je potrebné spravovať. Keď sa klient pripojí k Puppet masteru, konfiguračný súbor definovaný na Puppet mastere sa skompiluje a následne spustí na klientovi. V predvolenom nastavení každý klient komunikuje so serverom každú polhodinu, aby potvrdil aktualizáciu konfiguračných informácií. Ak sa objavia nové konfiguračné informácie alebo sa zmenia, konfigurácia sa znovu skompiluje a zverejní každému klientovi na vykonanie. Môžete tiež aktívne spustiť aktualizáciu konfiguračných informácií na serveri, aby ste prinútili každého klienta ich nakonfigurovať. Ak sa zmenia konfiguračné informácie klienta, môže získať pôvodnú konfiguráciu zo servera a opraviť ju.
Správa konfigurácie: Inštalácia a použitie bábok (1)
4. Budúcnosť Puppet
Nakoniec, Puppet je mladý nástroj, ktorý je stále vo vývoji. Komunita Puppet rýchlo rastie a neustále sa začleňuje mnoho nových nápadov, čo podnecuje vývoj, aktualizácie a prezentáciu modulov každý deň.
2. Konfigurácia a inštalácia (inštalácia Puppet 2.6.4 CentOS 5.4):
Nakonfigurujte repozitár na bábkovom serveri a klientovi: 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 Pridať k: [epel-bábka] Meno=Epel bábka baseurl=http://tmz.fedorapeople.org/repo/puppet/epel/5/$basearch/ enabled=0 gpgcheck=0
Pridajte repozitár puppet.repo: [root@puppetmaster ~]# vi /etc/yum.repos.d/puppet.repo [bábkové laboratórium] meno=Balíky Puppet Labs baseurl=http://yum.puppetlabs.com/base/ enabled=0 gpgcheck=0
Inštalácia majstra bábok: [root@puppetmaster ~]# yum --enablerepo=epel,epel-puppet install puppet-server
Upravte hostiteľov a pridajte nasledujúce dva záznamy: [root@puppetmaster ~]# vi /atď/hostitelia 192.168.0.10 puppetmaster.leju.com bábka 192.168.0.100 puppetclient.leju.com
Konfigurácia bábky: [root@puppetmaster ~]# cd /etc/puppet/ [root@puppetmaster bábka] # vi bábka.conf
[hlavné] # Adresár bábokových denníkov. # Predvolená hodnota je '$vardir/log'. logdir = /var/log/puppet
# Kde sa uchovávajú PID súbory bábky. # Predvolená hodnota je '$vardir/run'. rundir = /var/bež/bábka
# Kde sa uchovávajú SSL certifikáty. # Predvolená hodnota je '$confdir/ssl'. SSLDir = $vardir/SSL
[agent] # Súbor, v ktorom puppetd uchováva zoznam tried # Spojené s obnovenou konfiguráciou. Môže byť načítaný # samostatný spustiteľný súbor ''puppet'' pomocou ''--loadclass'' # možnosť. # Predvolená hodnota je '$confdir/classes.txt'. Classfile = $vardir/classes.txt
# Kde puppetd ukladá lokálnu konfiguráciu. An prípona # označujúca formát cache sa automaticky pridáva. # Predvolená hodnota je '$confdir/localconfig'. localconfig = $vardir/localconfig server = puppetmaster.leju.com report = pravda počúvať = pravda
[majster] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY autosign = pravda Správy = Uložiť
[root@puppetmaster puppet]# vi fileserver.conf [súbory] path /etc/puppet/files dovoliť *
[moduly] dovoliť *
[pluginy] dovoliť *
[root@puppetmaster bábka]# mkdir /etc/puppet/files
[root@puppetmaster bábka] # CD manifesty/ Vytvorte site.pp, čo je konfiguračný súbor pre vstup bábky: [root@puppetmaster manifests]# vi site.pp importovať "modules.pp" import "roles.pp" importovať "nodes.pp"
# Všeobecné nastavenia pre štandardné typy Exec { path => "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" }
filebucket { main: server => "puppetmaster.leju.com" } Súbor { backup => main }
Vytvorte modules.pp na import modulov: [root@puppetmaster manifests]# vi modules.pp Import "test"
Vytvorte roles.pp na definovanie rolí servera: [root@puppetmaster manifestuje]# vi roles.pp Trieda základná trieda { include test
}
Vytvorte nodes.pp na konfiguráciu serverových uzlov: [root@puppetmaster manifests]# vi nodes.pp uzol 'basenode' { zahrnúť základnú triedu
}
Uzol 'puppetclient.leju.com' dedí Basenode { tag("test")
}
Uzol 'puppetmaster.leju.com' dedí Basenode { tag("test")
}
[root@puppetmaster manifestuje]# cd .. [root@puppetmaster bábka]# moduly mkdir Vytvorte testovací modul: [root@puppetmaster moduly]# mkdir -p test/manifesty/ [root@puppetmaster moduly]# mkdir test/files/ [root@puppetmaster moduly]# cd test/súbory/ [root@puppetmaster súbory]# vi test.txt Testovacia línia! [root@puppetmaster súbory]# cd .. /manifestuje/ Vytvorte testovaciu triedu na doručenie súboru klientovi: [root@puppetmaster manifestuje]# vi init.pp Test triedy { súbor { "/tmp/test.txt": zabezpečiť => prítomný, grupa => "koreň", vlastník => "koreň", režim => "0644", zdroj => "puppet:///test/test.txt" }
}
Spustenie Puppet Mastera: [root@puppetmaster manifestuje]# /etc/init.d/puppetmaster štart Uisti sa, že port 8140 je zapnutý.
Inštalácia klienta bábok: [root@puppetclient ~]# yum --enablerepo="epel,epel-puppet" inštalačná bábka
Upravte hostiteľov a pridajte nasledujúce dva záznamy: [root@puppetclient ~]# vi /atď/hostitelia 192.168.0.10 puppetmaster.leju.com bábka 192.168.0.100 puppetclient.leju.com
Konfigurácia bábky: [root@puppetclient ~]# cd /etc/puppet/ [root@puppetclient bábka] # vi puppet.conf [hlavné] # Adresár bábokových denníkov. # Predvolená hodnota je '$vardir/log'. logdir = /var/log/puppet
# Kde sa uchovávajú PID súbory bábky. # Predvolená hodnota je '$vardir/run'. rundir = /var/bež/bábka
# Kde sa uchovávajú SSL certifikáty. # Predvolená hodnota je '$confdir/ssl'. SSLDir = $vardir/SSL
[agent] # Súbor, v ktorom puppetd uchováva zoznam tried # Spojené s obnovenou konfiguráciou. Môže byť načítaný # samostatný spustiteľný súbor ''puppet'' pomocou ''--loadclass'' # možnosť. # Predvolená hodnota je '$confdir/classes.txt'. Classfile = $vardir/classes.txt
# Kde puppetd ukladá lokálnu konfiguráciu. An prípona # označujúca formát cache sa automaticky pridáva. # Predvolená hodnota je '$confdir/localconfig'. localconfig = $vardir/localconfig
server = puppetmaster.leju.com report = pravda počúvať = pravda
[root@puppetclient puppet]# vi namespaceauth.conf [puppetrunner] Dovoľte puppetmaster.leju.com povoliť *.leju.com
[root@puppetclient bábka]# vi auth.conf Pridajte povoliť * na posledný riadok ...... Cesta / auth any dovoliť *
[root@puppetclient bábka] # CD Vykonajte bábku: [root@puppetclient ~]# Puppetd --noop --test --trace --debug Ak Puppet Master nenastaví: autosign=true, musí sa vykonať v Puppet Master: [root@puppetmaster ~]# certifikát bábky -l puppetclient.leju.com [root@puppetmaster ~]# certifikát bábky -s puppetclient.leju.com Podpíš puppetclient.leju.com takto. Potom sa vráťte ku klientovi a vykonáte tu: [root@puppetclient ~]# Puppetd --noop --test --trace --debug Join --nie, konfigurácia sa na klientovi naozaj neaplikuje, hlavne sa používa na testovanie, aby sa zistilo, či nie sú chyby vo výtlačku, a spustenie bez chýb: [root@puppetclient ~]# bábka --test --trace --debug
Zobraziť dokument: [root@puppetclient ~]# ll /tmp/ spolu 8 -rw-r--r-- 1 koreňový koreň 11. februára 25. 22:35 test.txt Dokument bol vydaný.
Je tiež možné tlačiť na Puppet Mastera: [root@puppetmaster ~]# bábkový kop -d --moderátor puppetclient.leju.com Spúšťanie puppetclient.leju.com Získanie statusu Status je úspech puppetclient.leju.com skončil s výstupným kódom 0 Dokončené Vrátenie 0 znamená, že bábka na klientovi bola úspešne spustená.
Nastavte bábku na automatický štart: chkconfig --level 2345 bábka na
Upraviť puppetmastera tak, aby používal Passenger Passenger je rozšírením Apache 2.x pre prevádzku Rails alebo Rack aplikácií v Apache. puppetmaster používa WEBrick na poskytovanie súborových služieb ako predvolený, ak máte veľa puppet klientov, výkon súborových služieb Puppetmastera bude slabý, aby bol Puppetmaster robustnejší, preto používajte Apache na poskytovanie súborových služieb.
Inštalácia: [root@puppetmaster ~]# yum install httpd httpd-devel ruby-devel rubygems Passenger 2.2.2 RHEL5 funguje bez problémov. Pridať foreman.repozitár: [root@puppetmaster ~]# vi /etc/yum.repos.d/foreman.repo [majster] meno=Foremanov stabilný repozitár baseurl=http://yum.theforeman.org/stable gpgcheck=0 enabled=1 [root@puppetmaster ~]# Mňam inštalácia rubygem-passenger-2.2.2-1 [root@puppetmaster ~]# rubygem-rack-1.0.1-1 [root@puppetmaster ~]# passenger-install-apache2-module
Inštalácia SSL modulu Apache: [root@puppetmaster ~]# Mňam, inštaluj mod_ssl
Na konfiguráciu aplikácie Puppet rack: 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 PassengerRuby /usr/bin/ruby PassengerMaxPoolVeľkosť 30 Čas pasažierPoolIdleTime 1500 PassengerMaxRequests 1000 Rýchlosť plynu 120 RackAutoDetect vypnutý RailsAutoDetect vypnutý
[root@puppetmaster ~]# vi /etc/httpd/conf.d/puppetmasterd.conf # Pravdepodobne by si mal doladiť tieto nastavenia PassengerHighPerformance na PassengerMaxPoolVeľkosť 12 Čas pasažierPoolIdleTime 1500 # PassengerMaxPožiadavky 1000 Rýchlosť plynu 120 RackAutoDetect vypnutý RailsAutoDetect vypnutý
Počúvaj 8140
<VirtualHost *:8140> SSLEngine on SSLProtocol -ALL +SSLv3 +TLSv1 SSLCipherSuite VŠETCI:! 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 # Ak sa Apache sťažuje na neplatné podpisy v CRL, môžete skúsiť vypnúť # CRL kontroluje komentárom na ďalší riadok, ale toto sa neodporúča. SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem SSLVerifyClient voliteľné SSLVerifyDepth 1 SSLOptions +StdEnvVars
# Nasledujúce klientské hlavičky umožňujú rovnakú konfiguráciu pracovať s Poundom. 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 /atď/puppet/rack/puppetmasterd/public/ RackBaseURI / <Adresár /atď/puppet/rack/puppetmasterd/> Možnosti Žiadne AllowOverride None Príkaz povoliť, zamietnuť dovoliť od všetkých </Directory> </VirtualHost>
Upravte konfiguračný súbor puppetmastera tak, aby ste pridali nasledujúce dva riadky: [root@puppetmaster ~]# vi /etc/puppet/puppet.conf [majster] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY
Upraviť /etc/sysconfig/puppetmaster: [root@puppetmaster ~]# vi /etc/sysconfig/puppetmaster # Pridajte nasledujúci riadok na koniec: PUPPETMASTER_EXTRA_OPTS="--hlási úložisko" Ak potrebujete podávať správy majstrom aj puppet-dashboardu, pridajte nasledujúci riadok: PUPPETMASTER_EXTRA_OPTS="--hlási sklad, majster puppet_dashboard"
Zastavte službu bábkového majstra a začnite službu Apache: [root@puppetmaster ~]# /etc/init.d/puppetmaster stop [root@puppetmaster ~]# /etc/init.d/httpd začiatok
Boot nespustí službu puppetmaster, boot spúšťa httpd službu: [root@puppetmaster ~]# chkconfig --level 2345 puppetmaster vypnutý [root@puppetmaster ~]# chkconfig --level 2345 httpd on
Uisti sa, že port 8140 je zapnutý: [root@puppetmaster ~]# netstat -tunlp |grep 8140 tcp 0 0 :::8140 :::* POČÚVAJTE 9834/httpd
Otestujte na strane klienta, či sa vytlačí záznam chýb: [root@puppetclient ~]# bábka --test --trace --debug |