|
|
Postat pe 20.10.2014 09:47:45
|
|
|

1. Introducere în păpușă
Administratorii de sistem sunt adesea blocați într-o serie de sarcini repetitive: actualizarea pachetelor, gestionarea fișierelor de configurare, a serviciilor de sistem, a sarcinilor cron, adăugarea de configurații noi, corectarea erorilor, etc. Aceste sarcini sunt adesea repetitive și ineficiente, iar primul răspuns la rezolvarea lor este automatizarea lor, astfel încât să apară scripturi personalizate. Din cauza complexității mediului, scripturile și aplicațiile personalizate sunt dezvoltate în mod repetat și dificil de adaptat mai multe platforme, iar flexibilitatea și funcționalitatea sunt greu de garantat, astfel că au apărut instrumente automate de management al configurației precum Puppet.
În lumea open source, există multe instrumente de configurare din care poți alege, iar unele dintre produsele cheie din acest domeniu sunt:
Puppet (http://puppet.reductivelabs.com/): Un instrument de management al configurației scris în Ruby care folosește arhitectura C/S pentru a configura clientul în limbaj declarativ. Cfengine (http://www.cfengine.org): Unul dintre primele instrumente open source de configurare lansate, lansat în 1993, este tot o arhitectură C/S, folosită de obicei în instituțiile de învățământ. LCFG(http://www.lcfg.org/): Un instrument de management al configurației pentru arhitecturi C/S care folosește XML pentru a defini configurații. Bcfg2: Un instrument de management al configurației pentru arhitectura C/S scris în Python care folosește specificații și răspunsuri ale clienților pentru a configura gazda țintă.
Acest document este dedicat descrierii modului în care se poate folosi Puppet pentru a gestiona gazda, aplicațiile, programele de fundal și diverse servicii.
Despre Puppet:
1. La ce folosește Puppet?
Puppet este un instrument open-source de gestionare a configurației sistemului bazat pe Ruby, care se bazează pe arhitectura de implementare C/S. Dezvoltatorul principal este Luke Kanies, care urmează licența de copyright GPLv2. Din 1997, Kanies este implicat în administrarea sistemelor UNIX, iar dezvoltarea Puppet a rezultat din această experiență. Nemulțumit de uneltele de configurare disponibile, Kanies a început să dezvolte unelte în laboratorul Reductive între 2001 și 2005. Curând, Reductive Labs a lansat produsul lor emblematic, Puppet.
2. Caracteristici ale Pupput
Multe instrumente de gestionare a configurației sistemului funcționează foarte similar, cum ar fi cfengine. Ce face ca Puppet să fie unic?
Sintaxa lui Puppet îți permite să creezi un script separat pentru a construi un utilizator pe toate gazdele țintă. Toate gazdele țintă vor interpreta și executa modulul, la rândul lor, folosind sintaxa aplicabilă sistemului local. De exemplu, dacă această configurație este executată pe un server Red Hat, creează un utilizator folosind comanda useradd; Dacă această configurație este executată pe o gazdă FreeBSD, se folosește comanda adduser.
Un alt aspect remarcabil al Puppet este flexibilitatea sa. Datorită naturii software-ului open source, poți obține liber codul sursă al Puppet, iar dacă întâmpini probleme și ai această posibilitate, poți modifica sau îmbunătăți codul Puppet pentru a se potrivi mediului tău. În plus, dezvoltatorii și donatorii comunității continuă să îmbunătățească capacitățile Puppet. O comunitate mare de dezvoltatori și utilizatori este, de asemenea, dedicată furnizării de documentație și suport tehnic pentru Puppet.
Puppet este, de asemenea, ușor de scalat. Suportul pentru pachete personalizate și configurațiile speciale ale mediului de sistem pot fi adăugate rapid și ușor instalatorului Puppet.
3. Modul de lucru al păpușii
Puppet este un instrument de gestionare a configurației arhitecturii C/S care instalează pachetul puppet-server (cunoscut sub numele de Puppet master) pe un server central. Instalează software-ul client Puppet (numit Client Păpușă) pe gazda țintă care trebuie gestionată. Când clientul se conectează la Puppet master, fișierul de configurare definit pe Puppet master este compilat și apoi rulat pe client. Implicit, fiecare client comunică cu serverul la fiecare jumătate de oră pentru a confirma actualizarea informațiilor de configurare. Dacă există informații noi de configurare sau s-au schimbat, configurația va fi recompilată și publicată fiecărui client pentru execuție. Poți, de asemenea, să declanșezi activ o actualizare a informațiilor de configurare pe server pentru a forța fiecărui client să îl configureze. Dacă informațiile de configurare ale clientului sunt modificate, acesta poate obține configurația originală de la server pentru a o corecta.
Managementul configurației: Instalarea și utilizarea păpușilor (1)
4. Viitorul Marionetei
În final, Puppet este un instrument tânăr care încă este în dezvoltare și dezvoltare. Comunitatea de păpuși crește rapid, iar multe idei noi sunt constant încorporate, ceea ce determină dezvoltarea, actualizările și prezentarea modulelor în fiecare zi.
2. Configurare și instalare (Puppet 2.6.4 CentOS 5.4 instalare):
Configurează depozitul pe serverul marionetă și clientul: 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 Adaugă la: [păpușă epel] nume=păpușă epel baseurl=http://tmz.fedorapeople.org/repo/puppet/epel/5/$basearch/ activat=0 gpgcheck=0
Adaugă depozitul puppet.repo: [root@puppetmaster ~]# vi /etc/yum.repos.d/puppet.repo [laboratoare de păpuși] name=Pachete Puppet Labs baseurl=http://yum.puppetlabs.com/base/ activat=0 gpgcheck=0
Instalarea Păpușarului: [root@puppetmaster ~]# yum --enablerepo=epel,epel-puppet install puppet-server
Modifică gazdele și adaugă următoarele două înregistrări: [root@puppetmaster ~]# vi /etc/hosts 192.168.0.10 puppetmaster.leju.com păpușă 192.168.0.100 puppetclient.leju.com
Configurarea păpușii: [root@puppetmaster ~]# cd /etc/puppet/ [root@puppetmaster puppet]# vi puppet.conf
[principal] # Directorul jurnalului Păpușilor. # Valoarea implicită este '$vardir/log'. logdir = /var/log/păpușă
# Unde sunt păstrate fișierele PID ale Marionetei. # Valoarea implicită este "$vardir/run". rundir = /var/run/păpușă
# Unde sunt păstrate certificatele SSL. # Valoarea implicită este '$confdir/ssl'. ssldir = $vardir/ssl
[agent] # Fișierul în care păpușa stochează o listă cu clasele # asociat cu configurația recuperată. Poate fi încărcat în # executabilul separat "''puppet'' folosind ''-loadclasses'' # Opțiune. # Valoarea implicită este '$confdir/classes.txt'. fișier de clasă = $vardir/classes.txt
# Unde puppetd ascunde configurația locală. An # extensia care indică formatul cache-ului este adăugată automat. # Valoarea implicită este '$confdir/localconfig'. localconfig = $vardir/localconfig server = puppetmaster.leju.com raport = adevărat ascultă = adevărat
[stăpâne] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY autosign = adevărat rapoarte = stocare
[root@puppetmaster păpușă]# vi fileserver.conf [dosare] path /etc/puppet/files permite *
[module] permite *
[pluginuri] permite *
[root@puppetmaster puppet]# mkdir /etc/puppet/files
[root@puppetmaster păpușă]# CD manifestă/ Create site.pp, care este fișierul de configurare al intrării păpușă: [root@puppetmaster manifestă]# vi site.pp import "modules.pp" Importă "roles.pp" import "nodes.pp"
# Setări generale pentru tipurile standard Exec { path => "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" }
filebucket { main: server => "puppetmaster.leju.com" } File { backup => main }
Create modules.pp pentru a importa modulele: [root@puppetmaster manifestă]# vi modules.pp "Test" de import
Creează roles.pp pentru a defini rolurile serverului: [root@puppetmaster se manifestă]# vi roles.pp clasa de bază { include test
}
Creează nodes.pp pentru a configura nodurile serverului: [root@puppetmaster manifestă]# vi nodes.pp node 'basenode' { include clasa de bază
}
nodul 'puppetclient.leju.com' moștenește basenode { tag("test")
}
Nodul 'puppetmaster.leju.com' moștenește basenode { tag("test")
}
[root@puppetmaster se manifestă]# CD .. [root@puppetmaster păpușă]# module mkdir Creează un modul de testare: [root@puppetmaster module]# mkdir -p test/manifests/ [root@puppetmaster module]# test/fișiere mkdir/ [root@puppetmaster module]# test/fișiere CD/ [root@puppetmaster fișiere]# vi test.txt Linia de testare! [root@puppetmaster fișiere]# CD .. /manifestă/ Creează o clasă de test pentru a livra un fișier clientului: [root@puppetmaster se manifestă]# vi init.pp test de clasă { fișier { "/tmp/test.txt": asigură-te că => prezent, grup => "rădăcină", proprietar => "rădăcină", mod => "0644", sursă => "puppet:///test/test.txt" }
}
Lansarea Puppet Master: [root@puppetmaster manifestă]# /etc/init.d/puppetmaster start Asigură-te că portul 8140 este activ.
Instalarea clientului păpușă: [root@puppetclient ~]# yum --enablerepo="epel,epel-puppet" instalează puppet
Modifică gazdele și adaugă următoarele două înregistrări: [root@puppetclient ~]# vi /etc/hosts 192.168.0.10 puppetmaster.leju.com păpușă 192.168.0.100 puppetclient.leju.com
Configurarea păpușii: [root@puppetclient ~]# cd /etc/puppet/ [root@puppetclient păpușă]# vi puppet.conf [principal] # Directorul jurnalului Păpușilor. # Valoarea implicită este '$vardir/log'. logdir = /var/log/păpușă
# Unde sunt păstrate fișierele PID ale Marionetei. # Valoarea implicită este "$vardir/run". rundir = /var/run/păpușă
# Unde sunt păstrate certificatele SSL. # Valoarea implicită este '$confdir/ssl'. ssldir = $vardir/ssl
[agent] # Fișierul în care păpușa stochează o listă cu clasele # asociat cu configurația recuperată. Poate fi încărcat în # executabilul separat "''puppet'' folosind ''-loadclasses'' # Opțiune. # Valoarea implicită este '$confdir/classes.txt'. fișier de clasă = $vardir/classes.txt
# Unde puppetd ascunde configurația locală. An # extensia care indică formatul cache-ului este adăugată automat. # Valoarea implicită este '$confdir/localconfig'. localconfig = $vardir/localconfig
server = puppetmaster.leju.com raport = adevărat ascultă = adevărat
[root@puppetclient păpușă]# vi namespaceauth.conf [Păpușar] Permiteți puppetmaster.leju.com permite *.leju.com
[root@puppetclient păpușă]# vi auth.conf Adaugă allow * la ultima linie ...... Drum / Auth Any permite *
[root@puppetclient păpușă]# CD Execută păpușă: [root@puppetclient ~]# puppetd --noop --test --trace --debug Dacă Puppet Master nu setează: autosign=true, trebuie executat în Puppet Master: [root@puppetmaster ~]# certificat păpușă -l puppetclient.leju.com [root@puppetmaster ~]# certificat păpușă -s puppetclient.leju.com Semnează puppetclient.leju.com așa. Apoi revino la client pentru a executa aici: [root@puppetclient ~]# puppetd --noop --test --trace --debug Join --noop, configurația nu va fi aplicată cu adevărat pe client, folosită în principal pentru testare, pentru a vedea dacă există erori în printare, și execută fără erori: [root@puppetclient ~]# puppetd --test --trace --debug
Vizualizați documentul: [root@puppetclient ~]# ll /tmp/ Total 8 -rw-r--r-- 1 rădăcină 11 25 feb 22:35 test.txt Documentul a fost emis.
Este posibil, de asemenea, să împingi asupra Puppet Master: [root@puppetmaster ~]# Păpușă Lovitură -D ---Gazdă puppetclient.leju.com Declanșarea puppetclient.leju.com Obținerea statutului Statutul este succesul puppetclient.leju.com terminat cu codul de ieșire 0 Terminat Returnarea 0 indică faptul că puppetd asupra clientului a fost declanșat cu succes.
Setează păpușa să pornească automat: chkconfig --nivel 2345 păpușă activată
Modifică Puppetmaster-ul pentru a folosi Pasagerul Passenger este o extensie a Apache 2.x pentru aplicații Rails sau Rack în Apache. puppetmaster folosește WEBrick pentru a oferi servicii de fișiere implicit, dacă ai mulți clienți păpuși, performanța serviciului de fișiere a păpușarului va fi slabă, pentru a face Puppetmaster mai robust, așa că folosește Apache pentru a oferi servicii de fișiere.
Instalare: [root@puppetmaster ~]# yum install httpd httpd-devel ruby-devel rubygems Passenger 2.2.2 RHEL5 funcționează bine. Adaugă depozitul foreman.repo: [root@puppetmaster ~]# vi /etc/yum.repos.d/foreman.repo [maistru] nume=depozitul stabil Foreman baseurl=http://yum.theforeman.org/stable gpgcheck=0 activat=1 [root@puppetmaster ~]# yum instalează rubygem-passenger-2.2.2-1 [root@puppetmaster ~]# Rubygem-rack-1.0.1-1 [root@puppetmaster ~]# passenger-install-apache2-module
Instalarea modulului SSL Apache: [root@puppetmaster ~]# Instalare delicioasă mod_ssl
Pentru configurarea aplicației 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 PassengerMaxPoolDimensiunea 30 PassengerPoolIdleTime 1500 PassengerMaxRequests 1000 PassengerStatThrottleRate 120 RackAutoDetect dezactivat RailsAutoDetect dezactivat
[root@puppetmaster ~]# vi /etc/httpd/conf.d/puppetmasterd.conf # probabil vrei să reglezi aceste setări Pasager Performanță înaltă activată PassengerMaxPoolDimensiunea 12 PassengerPoolIdleTime 1500 # PassengerMaxRequests 1000 PassengerStatThrottleRate 120 RackAutoDetect dezactivat RailsAutoDetect dezactivat
Ascultă 8140
<VirtualHost *:8140> SSLEngine on SSLProtocol -ALL +SSLv3 +TLSv1 SSLCipherSuite TOȚI:! 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 # Dacă Apache se plânge de semnături invalide pe CRL, poți încerca să dezactivezi # CRL verifică comentând următoarea linie, dar acest lucru nu este recomandat. SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem SSLVerifyClient opțional SSLVerifyDepth 1 SSLOptions +StdEnvVars
# Următoarele antete de client permit aceeași configurație să funcționeze cu Pound. 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/puppet/rack/puppetmasterd/public/ RackBaseURI / <Directory /etc/puppet/rack/puppetmasterd/> Nicio opțiune AllowOverride Niciunul Ordin, permite, negă permite de la toți </Directory> </VirtualHost>
Modifică fișierul de configurare al păpușarului pentru a adăuga următoarele două linii: [root@puppetmaster ~]# vi /etc/puppet/puppet.conf [stăpâne] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY
Modifică /etc/sysconfig/puppetmaster: [root@puppetmaster ~]# vi /etc/sysconfig/puppetmaster # Adaugă următoarea linie la final: PUPPETMASTER_EXTRA_OPTS="--rapoarte stocare" Dacă trebuie să raportați atât la foreman, cât și la puppet-dashboard, adăugați următoarea linie: PUPPETMASTER_EXTRA_OPTS="--rapoarte, magazin, puppet_dashboard"
Oprește serviciul de păpușari și începe serviciul apache: [root@puppetmaster ~]# /etc/init.d/puppetmaster stop [root@puppetmaster ~]# /etc/init.d/httpd start
Boot nu pornește serviciul puppetmaster, boot pornește serviciul httpd: [root@puppetmaster ~]# chkconfig --nivel 2345 Puppetmaster dezactivat [root@puppetmaster ~]# chkconfig --level 2345 httpd on
Asigură-te că portul 8140 este activat: [root@puppetmaster ~]# netstat -tunlp |grep 8140 TCP 0 0 :::8140 :::* ASCULTĂ 9834/httpd
Testează pe partea clientului pentru a vedea dacă jurnalul de erori este tipărit: [root@puppetclient ~]# puppetd --test --trace --debug |
Precedent:Parametrii importanți php-fpm.conf sunt explicați în detaliuUrmător:Pe 25 octombrie 2014 (sâmbătă), la ora 16:00, a fost testată alarma de apărare antiaeriană și prevenire a dezastrelor
|