|
|
Pubblicato su 20/10/2014 09:47:45
|
|
|

1. Introduzione al burattino
Gli amministratori di sistema spesso si trovano bloccati in una serie di compiti ripetitivi: aggiornare pacchetti, gestire file di configurazione, servizi di sistema, attività cron, aggiungere nuove configurazioni, correggere bug, ecc. Questi compiti sono spesso ripetitivi e inefficienti, e la prima risposta per risolverli è automatizzarli, così compaiono script personalizzati. A causa della complessità dell'ambiente, script e applicazioni personalizzate vengono ripetutamente sviluppati e difficili da adattare a più piattaforme, e flessibilità e funzionalità sono difficili da garantire, quindi sono emersi strumenti di gestione automatica della configurazione come Puppet.
Nel mondo open source, ci sono molti strumenti di configurazione tra cui scegliere, e alcuni dei prodotti chiave in questo ambito sono:
Puppet (http://puppet.reductivelabs.com/): Uno strumento di gestione della configurazione scritto in Ruby che utilizza l'architettura C/S per configurare il client in linguaggio dichiarativo. Cfengine (http://www.cfengine.org): Uno dei primi strumenti open source di configurazione rilasciati, rilasciato nel 1993, è anche un'architettura C/S, solitamente utilizzata nelle istituzioni educative. LCFG(http://www.lcfg.org/): Uno strumento di gestione della configurazione per architetture C/S che utilizza XML per definire le configurazioni. Bcfg2: Uno strumento di gestione della configurazione per architettura C/S scritto in Python che utilizza specifiche e risposte del client per configurare l'host di destinazione.
Questo documento è dedicato a descrivere come utilizzare Puppet per gestire il tuo host, le applicazioni, i programmi in background e vari servizi.
Informazioni su Puppet:
1. A cosa serve Puppet Puppet?
Puppet è uno strumento open source di gestione della configurazione di sistema basato su Ruby che si basa sull'architettura di distribuzione C/S. Lo sviluppatore principale è Luke Kanies, che segue la licenza di copyright GPLv2. Dal 1997, Kanies è coinvolto nell'amministrazione di sistemi UNIX, e lo sviluppo di Puppet è nato da questa esperienza. Non soddisfatto degli strumenti di configurazione disponibili, Kanies iniziò a sviluppare strumenti nel laboratorio Reductive tra il 2001 e il 2005. Presto, Reductive Labs ha rilasciato il loro prodotto di punta, Puppet.
2. Caratteristiche di Pupput
Molti strumenti di gestione della configurazione di sistema funzionano in modo molto simile, come cfengine. Cosa rende unica Puppet Puppet?
La sintassi di Puppet ti permette di creare uno script separato per costruire un utente su tutti gli host target. Tutti gli host target interpreteranno ed eseguiranno il modulo a turno utilizzando la sintassi applicabile al sistema locale. Ad esempio, se questa configurazione viene eseguita su un server Red Hat, crea un utente usando il comando useradd; Se questa configurazione viene eseguita su un host FreeBSD, viene utilizzato il comando adduser.
Un altro aspetto notevole di Puppet è la sua flessibilità. A causa della natura del software open source, puoi ottenere liberamente il codice sorgente di Puppet e, se incontri problemi e ne hai la possibilità, puoi modificare o migliorare il codice di Puppet per adattarlo al tuo ambiente. Inoltre, gli sviluppatori e i donatori della community continuano a migliorare le capacità di Puppet. Una vasta comunità di sviluppatori e utenti è inoltre impegnata a fornire documentazione e supporto tecnico per Puppet.
Puppet è anche facile da scalare. Il supporto a package personalizzati e configurazioni speciali dell'ambiente di sistema possono essere aggiunte rapidamente e facilmente all'installatore Puppet.
3. Modalità di funzionamento del burattino
Puppet è uno strumento di gestione della configurazione dell'architettura C/S che installa il pacchetto puppet-server (noto come puppet master) su un server centrale. Installa il software client Puppet (chiamato Client Puppet Client) sull'host di destinazione che deve essere gestito. Quando il client si collega al pupazzo master, il file di configurazione definito sul pupazzo viene compilato e poi eseguito sul client. Di default, ogni client comunica con il server ogni mezz'ora per confermare l'aggiornamento delle informazioni di configurazione. Se ci sono nuove informazioni di configurazione o sono state modificate, la configurazione verrà ricompilata e pubblicata a ciascun client per l'esecuzione. Puoi anche attivare attivamente un aggiornamento delle informazioni di configurazione sul server per costringere ogni client a configurarla. Se le informazioni di configurazione del client vengono modificate, può ottenere la configurazione originale dal server per correggerle.
Gestione della configurazione: installazione e utilizzo dei pupazzi (1)
4. Il futuro di Puppet
Infine, Puppet è uno strumento giovane ancora in fase di sviluppo e sviluppo. La comunità dei pupazzi sta crescendo rapidamente e molte nuove idee vengono costantemente incorporate, stimolando sviluppi, aggiornamenti e moduli presentati ogni giorno.
2. Configurazione e installazione (Puppet 2.6.4 installazione CentOS 5.4):
Configura il repository sul server burattino e sul client: 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 Aggiungete a: [burattino epel] nome=pupazzo epel baseurl=http://tmz.fedorapeople.org/repo/puppet/epel/5/$basearch/ abilitato=0 gpgcheck=0
Aggiungi il repository puppet.repo: [root@puppetmaster ~]# vi /etc/yum.repos.d/puppet.repo [puppetlabs] name=Puppet Labs Packages baseurl=http://yum.puppetlabs.com/base/ abilitato=0 gpgcheck=0
Installazione del burattinaio: [root@puppetmaster ~]# yum --enablerepo=epel,epel-puppet install puppet-server
Modifica gli host e aggiungi i seguenti due record: [root@puppetmaster ~]# vi /ecc/hosts 192.168.0.10 puppetmaster.leju.com burattino 192.168.0.100 puppetclient.leju.com
Configurazione del puppet: [root@puppetmaster ~]# cd /etc/puppet/ [root@puppetmaster puppet]# vi puppet.conf
[principale] # La directory dei registri dei burattini. # Il valore predefinito è '$vardir/log'. logdir = /var/log/puppet
# Dove sono conservati i file PID dei burattini. # Il valore predefinito è '$vardir/run'. rundir = /var/run/puppet
# Dove sono conservati i certificati SSL. # Il valore predefinito è '$confdir/ssl'. ssldir = $vardir/ssl
[agente] # Il file in cui puppetd memorizza una lista delle classi # associato alla configurazione recuperata. Può essere caricato # l'eseguibile separato ''puppet'' usando le ''-loadclasses'' # Opzione. # Il valore predefinito è '$confdir/classes.txt'. classfile = $vardir/classes.txt
# Dove puppetd memorizza la configurazione locale. Un # estensione che indica il formato della cache viene aggiunta automaticamente. # Il valore predefinito è '$confdir/localconfig'. localconfig = $vardir/localconfig server = puppetmaster.leju.com report = vero ascolta = vero
[maestro] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY autosign = vero report = store
[root@puppetmaster burattino]# vi fileserver.conf [fascicoli] percorso /etc/puppet/files permettere *
[moduli] permettere *
[plugin] permettere *
[root@puppetmaster puppet]# mkdir /etc/puppet/files
[root@puppetmaster burattino]# CD manifesta/ Create site.pp, che è il file di configurazione della voce burattina: [root@puppetmaster manifesta]# vi site.pp importa "modules.pp" importa "roles.pp" Importa "nodes.pp"
# Impostazioni generali per tipi 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 per importare moduli: [root@puppetmaster manifesti]# vi modules.pp "test" di importazione
Create roles.pp per definire i ruoli del server: [root@puppetmaster manifesta]# vi ruoli.pp classe base { include test
}
Create nodes.pp per configurare i nodi server: [root@puppetmaster manifesta]# vi nodes.pp node 'basenode' { include la classe base
}
il nodo 'puppetclient.leju.com' eredita il basenode { tag("test")
}
nodo 'puppetmaster.leju.com' eredita basenode { tag("test")
}
[root@puppetmaster manifesta]# CD .. [root@puppetmaster burattino]# Moduli MKDIR Crea un modulo di prova: [root@puppetmaster moduli]# mkdir -p test/manifesti/ [root@puppetmaster moduli]# test/file mkdir/ [root@puppetmaster moduli]# test CD/file/ [root@puppetmaster file]# vi test.txt Linea di prova! [root@puppetmaster file]# CD .. /manifesta/ Crea una classe di test per consegnare un file al client: [root@puppetmaster manifesta]# vi init.pp Test di classe { file { "/tmp/test.txt": assicurati => presente, gruppo => "radice", proprietario => "radice", modalità => "0644", source => "puppet:///test/test.txt" }
}
Lancio di Puppet Master: [root@puppetmaster manifesta]# /etc/init.d/puppetmaster start Assicurati che la porta 8140 sia attiva.
Installazione del client puppetta: [root@puppetclient ~]# yum --enablerepo="epel,epel-puppet" installa puppet
Modifica gli host e aggiungi i seguenti due record: [root@puppetclient ~]# vi /ecc/hosts 192.168.0.10 puppetmaster.leju.com burattino 192.168.0.100 puppetclient.leju.com
Configurazione del burattino: [root@puppetclient ~]# cd /ecc/puppet/ [root@puppetclient puppet]# vi puppet.conf [principale] # La directory dei registri dei burattini. # Il valore predefinito è '$vardir/log'. logdir = /var/log/puppet
# Dove sono conservati i file PID dei burattini. # Il valore predefinito è '$vardir/run'. rundir = /var/run/puppet
# Dove sono conservati i certificati SSL. # Il valore predefinito è '$confdir/ssl'. ssldir = $vardir/ssl
[agente] # Il file in cui puppetd memorizza una lista delle classi # associato alla configurazione recuperata. Può essere caricato # l'eseguibile separato ''puppet'' usando le ''-loadclasses'' # Opzione. # Il valore predefinito è '$confdir/classes.txt'. classfile = $vardir/classes.txt
# Dove puppetd memorizza la configurazione locale. Un # estensione che indica il formato della cache viene aggiunta automaticamente. # Il valore predefinito è '$confdir/localconfig'. localconfig = $vardir/localconfig
server = puppetmaster.leju.com report = vero ascolta = vero
[root@puppetclient puppet]# vi namespaceauth.conf [burattinaio] Permettere puppetmaster.leju.com permette *leju.com
[root@puppetclient puppet]# vi auth.conf Aggiungi allow * all'ultima riga ...... Percorso / Auth Any permettere *
[root@puppetclient puppet]# CD Esegui il burattino: [root@puppetclient ~]# puppetd --noop --test --trace --debug Se Puppet Master non imposta: autosign=true, deve essere eseguito in Puppet Master: [root@puppetmaster ~]# Certificato Burattino -L puppetclient.leju.com [root@puppetmaster ~]# Certificato burattino -s puppetclient.leju.com Firma puppetclient.leju.com così. Poi torna al client per eseguire qui: [root@puppetclient ~]# puppetd --noop --test --trace --debug Join --noop, la configurazione non verrà applicata sul client, principalmente per test, per vedere se ci sono errori nella stampa, ed esegui senza errori: [root@puppetclient ~]# puppetd --test --traccia --debug
Visualizza il documento: [root@puppetclient ~]# ll /tmp/ totale 8 -rw-r--r-- 1 radice radice 11 25 feb 22:35 test.txt Il documento è stato rilasciato.
È anche possibile spingere su Puppet Master: [root@puppetmaster ~]# Calcio di burattino -D --host puppetclient.leju.com Trigger puppetclient.leju.com Ottenere lo status Lo status è successo puppetclient.leju.com finito con il codice uscita 0 Concluso Restituire 0 indica che il puppetd sul cliente è stato attivato con successo.
Imposta il burattino per avviare automaticamente l'avvio: chkconfig --livello 2345 puppet ON
Modifica il burattinaio per usare il Passeggero Passenger è un'estensione di Apache 2.x per applicazioni Rails o Rack in Apache. puppetmaster usa WEBrick per fornire servizi di file di default; se hai molti client puppet, le prestazioni del servizio file di puppetmaster saranno scarse, per rendere puppetmaster più robusto, quindi usa Apache per fornire servizi di file.
Installazione: [root@puppetmaster ~]# yum install httpd httpd-devel ruby-devel rubygems Il RHEL5 passeggero 2.2.2 funziona bene. Aggiungi repository foreman.repo: [root@puppetmaster ~]# vi /etc/yum.repos.d/foreman.repo [caposquadra] name=Repositorio di stable Foreman baseurl=http://yum.theforeman.org/stable gpgcheck=0 abilitato=1 [root@puppetmaster ~]# yum installa rubygem-passenger-2.2.2-1 [root@puppetmaster ~]# Rubygem-Rack-1.0.1-1 [root@puppetmaster ~]# passenger-install-apache2-module
Installazione del modulo SSL Apache: [root@puppetmaster ~]# Installazione mod_ssl
Per configurare l'applicazione 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/ burattino chown /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 PassengerMaxPoolDimensione 30 PassengerPoolIdleTime 1500 PassengerMaxRequests 1000 PassengerStatThrottleRate 120 RackAutoDetect disattivato RailsAutorilevamento disattivato
[root@puppetmaster ~]# vi /etc/httpd/conf.d/puppetmasterd.conf # Probabilmente vuoi accordare queste impostazioni PassengerAlte prestazioni attivate PassengerMaxPoolDimensione 12 PassengerPoolIdleTime 1500 # PassengerMaxRequests 1000 PassengerStatThrottleRate 120 RackAutoDetect disattivato RailsAutorilevamento disattivato
Ascolta 8140
<VirtualHost *:8140> SSLEngine on SSLProtocol -ALL +SSLv3 +TLSv1 SSLCipherSuite TUTTI:! ADH:RC4+RSA:+ALTO:+MEDIO:-BASSO:-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 # Se Apache si lamenta di firme non valide sul CRL, puoi provare a disabilitarlo # CRL che controlla commentando la riga successiva, ma non è consigliato. SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem SSLVerifyClient opzionale SSLVerifyDepth 1 SSLOptions +StdEnvVars
# Le seguenti intestazioni client permettono alla stessa configurazione di funzionare con 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 /ecc/puppet/rack/puppetmasterd/pubblico/ RackBaseURI / <Directory /etc/puppet/rack/puppetmasterd/> Nessuna opzione AllowOverride Nessuno Ordine, permette, nega permettere da tutti </Directory> </VirtualHost>
Modifica il file di configurazione del puppetmaster per aggiungere le seguenti due righe: [root@puppetmaster ~]# vi /etc/puppet/puppet.conf [maestro] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY
Modifica /etc/sysconfig/puppetmaster: [root@puppetmaster ~]# vi /etc/sysconfig/puppetmaster # Aggiungi la seguente riga alla fine: PUPPETMASTER_EXTRA_OPTS="--report store" Se devi riferire sia al caposquadra che al puppet-dashboard, aggiungi la seguente riga: PUPPETMASTER_EXTRA_OPTS="--report store, caposquadra puppet_dashboard"
Ferma il servizio dei burattinai e inizia il servizio apache: [root@puppetmaster ~]# /etc/init.d/puppetmaster stop [root@puppetmaster ~]# /etc/init.d/httpd start
Boot non avvia il servizio puppetmaster, boot avvia il servizio httpd: [root@puppetmaster ~]# chkconfig --livello 2345 puppetmaster disattivato [root@puppetmaster ~]# chkconfig --level 2345 httpd on
Assicurati che la porta 8140 sia abilitata: [root@puppetmaster ~]# netstat -tunlp |grep 8140 TCP 0 0 :::8140 :::* ASCOLTA 9834/httpd
Testa lato client per vedere se il log degli errori è stampato: [root@puppetclient ~]# puppetd --test --traccia --debug |
Precedente:I parametri importanti di php-fpm.conf sono spiegati in dettaglioProssimo:Il 25 ottobre 2014 (sabato), alle 16:00, è stato testato l'allarme per la difesa aerea e la prevenzione dei disastri
|