Puppet è uno strumento di gestione della configurazione gratuito e open source, che ti aiuta a distribuire e gestire centralmente le configurazioni di centinaia di sistemi client. È disponibile per GNU/Linux, Mac, BSD, Solaris e sistemi di computer basati su Windows, rilasciato sotto licenza Apache, scritto in linguaggio "Ruby". Questa guida ti aiuta a installare puppet su CentOS 7 / RHEL 7.
Architettura del burattino:
Agente/Master:
In questa architettura, uno o più server eseguono l'applicazione puppet master, solitamente come un'applicazione Rack gestita da un server Web (come Apache con Passenger) e l'applicazione puppet agent viene eseguita sui server client, solitamente come servizio in background.
Periodicamente, l'agente burattinaio invierà fatti al burattinaio e richiederà un catalogo. Il master compilerà e restituirà il catalogo di quel nodo, utilizzando diverse fonti di informazioni a cui ha accesso.
L'architettura autonoma:
In questa architettura, i server client eseguono l'applicazione di applicazione puppet (combinazione autonoma delle applicazioni puppet master e puppet agent), in genere come attività pianificata o cron job.
Ambiente:
Qui, ti mostrerò come configurare un pupazzo nell'architettura master/agent. In questo tutorial, utilizzerò due sistemi CentOS 7 come indicato di seguito.
Maestro burattinaio:
Operating system : CentOS 7 Minimal IP Address : 192.168.12.10 HostName : server.itzgeek.local
Cliente fantoccio:
Operating System : CentOS 7 Minimal IP Address : 192.168.12.20 HostName : client.itzgeek.local
Prerequisiti:
Configura il repository EPEL su CentOS 7 / RHEL 7.
Assicurati che il tuo sistema (sia il server puppet che il client) sia in grado di risolvere il nome host a vicenda, usa il /etc/hosts file o server DNS .
Per avere una configurazione del pupazzo pronta per la produzione, dobbiamo usare Apache con il passeggero. Per ottenere il passeggero, scarica e posiziona il file repo in /etc/yum.repos.d/
Nota:solo sul server principale.
[root@server ~]# curl --fail -sSLo /etc/yum.repos.d/passenger.repo https://oss-binaries.phusionpassenger.com/yum/definitions/el-passenger.repo
Per installare il burattinaio/agente, avremmo bisogno di configurare il repository dei pupazzi su tutti i nodi. Abilita il repository di puppet labs installando sotto rpm.
Nota:eseguilo su entrambi i nodi master e agent.
# rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm
Installa e configura Puppet su CentOS 7:
Ora è il momento di installare il pupazzo. Installa il server dei pupazzi utilizzando il comando seguente.
[root@server ~]# yum -y install puppet-server
Come detto in precedenza, configureremo il puppet per l'architettura master/agent. Quindi, questo nodo fungerà da nodo master. Modifica il file di configurazione del pupazzo e modifica i dns_alt_names .
[root@server ~]# vi /etc/puppet/puppet.conf [main] dns_alt_names = server,server.itzgeek.local certname = server.itzgeek.local
Se questa macchina è l'unico burattinaio nel tuo ambiente, esegui il comando seguente per creare il certificato del burattinaio.
[root@server ~]# puppet master --verbose --no-daemonize Info: Creating a new SSL key for ca Info: Creating a new SSL certificate request for ca Info: Certificate Request fingerprint (SHA256): 81:C6:BB:8B:1D:71:4C:64:E1:13:54:1B:EC:CF:99:D8:85:90:D1:6C:E8:85:50:3E:03:41:BA:C5:47:A7:4C:E5 Notice: Signed certificate request for ca Info: Creating a new certificate revocation list Info: Creating a new SSL key for server.itzgeek.local Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml Info: Creating a new SSL certificate request for server.itzgeek.local Info: Certificate Request fingerprint (SHA256): FF:BE:D4:9B:E4:12:83:79:AE:BE:50:17:76:5F:F5:CD:5F:53:EA:5D:AA:5D:87:9E:7C:C4:BC:1B:8A:C6:FA:5C Notice: server.itzgeek.local has a waiting certificate request Notice: Signed certificate request for server.itzgeek.local Notice: Removing file Puppet::SSL::CertificateRequest server.itzgeek.local at '/var/lib/puppet/ssl/ca/requests/server.itzgeek.local.pem' Notice: Removing file Puppet::SSL::CertificateRequest server.itzgeek.local at '/var/lib/puppet/ssl/certificate_requests/server.itzgeek.local.pem' Notice: Starting Puppet master version 3.8.3
Dopo aver ricevuto "Avviso:avvio della versione Puppet master
Configura un server Web pronto per la produzione:
Puppet viene fornito con un server Web principale dei pupazzi di base, ma questo non può essere utilizzato per carichi reali. Dobbiamo configurare un server web di qualità di produzione prima di iniziare a gestire i nostri nodi con Puppet.
[root@server ~]# yum -y install httpd httpd-devel mod_ssl ruby-devel rubygems gcc gcc-c++ pygpgme curl
Installa il modulo Passeggero e Apache.
[root@server ~]# yum install -y mod_passenger
Crea tre directory per l'applicazione (una directory principale, una directory "pubblica" e una directory "tmp" ), copia il file ext/rack/config.ru dal codice sorgente di Puppet nella directory principale e imposta la proprietà del file config.ru.
[root@server ~]# mkdir -p /usr/share/puppet/rack/puppetmasterd [root@server ~]# mkdir /usr/share/puppet/rack/puppetmasterd/public /usr/share/puppet/rack/puppetmasterd/tmp [root@server ~]# cp /usr/share/puppet/ext/rack/config.ru /usr/share/puppet/rack/puppetmasterd/ [root@server ~]# chown puppet:puppet /usr/share/puppet/rack/puppetmasterd/config.ru
Aggiungi l'host virtuale per il pupazzo creando il file di configurazione di seguito.
[root@server ~]# vi /etc/httpd/conf.d/puppetmaster.conf
Aggiungi i contenuti sottostanti nel file host virtuale, cambia il verde voci colorate secondo il tuo ambiente.
# you probably want to tune these settings PassengerHighPerformance on PassengerMaxPoolSize 12 PassengerPoolIdleTime 1500 # PassengerMaxRequests 1000 PassengerStatThrottleRate 120 Listen 8140 <VirtualHost *:8140> SSLEngine on SSLProtocol ALL -SSLv2 -SSLv3 SSLCipherSuite EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!IDEA:!ECDSA:kEDH:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA SSLHonorCipherOrder on SSLCertificateFile /var/lib/puppet/ssl/certs/server.itzgeek.local.pem SSLCertificateKeyFile /var/lib/puppet/ssl/private_keys/server.itzgeek.local.pem SSLCertificateChainFile /var/lib/puppet/ssl/ca/ca_crt.pem SSLCACertificateFile /var/lib/puppet/ssl/ca/ca_crt.pem # If Apache complains about invalid signatures on the CRL, you can try disabling # CRL checking by commenting the next line, but this is not recommended. SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem # Apache 2.4 introduces the SSLCARevocationCheck directive and sets it to none # which effectively disables CRL checking; if you are using Apache 2.4+ you must # specify 'SSLCARevocationCheck chain' to actually use the CRL. # SSLCARevocationCheck chain SSLVerifyClient optional SSLVerifyDepth 1 # The `ExportCertData` option is needed for agent certificate expiration warnings SSLOptions +StdEnvVars +ExportCertData # This header needs to be set if using a loadbalancer or proxy RequestHeader unset X-Forwarded-For 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 /usr/share/puppet/rack/puppetmasterd/public RackBaseURI / <Directory /usr/share/puppet/rack/puppetmasterd/> Options None AllowOverride None Order allow,deny allow from all </Directory> </VirtualHost>
Riavvia il server Apache per avere l'effetto di un host virtuale fantoccio, per farlo, esegui il seguente comando sul terminale.
[root@server ~]# systemctl restart httpd.service
Disabilita il servizio puppet e abilita il server Apache per l'avvio automatico all'avvio del sistema.
[root@server ~]# systemctl disable puppet.service [root@server ~]# systemctl enable httpd.service
Firewall:
Il pupazzo è in ascolto sulla porta n. 8140; Configura le tabelle IP per consentirlo.
[root@server ~]# firewall-cmd --zone=public --add-port=8140/tcp --permanent [root@server ~]# firewall-cmd --reload
Installa Puppet sui nodi agente:
Sul computer client, installa l'agente puppet utilizzando il comando seguente.
Nota:devi avere il repository dei pupazzi configurato sui nodi dell'agente.
[root@client ~]# yum -y install puppet
Modifica il file di configurazione del pupazzo e imposta le informazioni sul master puppet nella stanza client.
Nota:modifica il valore del "server" in base al tuo ambiente. Nel mio caso, il server è "server.itzgeek.local"
[root@client ~]# vi /etc/puppet/puppet.conf [agent] server = server.itzgeek.local
Avvia puppet sul nodo agente e avvialo automaticamente all'avvio del sistema.
[root@client ~]# systemctl start puppet.service [root@client ~]# systemctl enable puppet.service
Otterresti di seguito gli eventi nei registri.
Oct 21 05:46:45 client systemd: Starting Puppet agent... Oct 21 05:46:46 client systemd: Started Puppet agent. Oct 21 05:47:03 client systemd: Reloading. Oct 21 05:49:10 client puppet-agent[2694]: Did not receive certificate
Firma il certificato del nodo agente sul server master:
In una distribuzione agente/master, un amministratore deve approvare una richiesta di certificato per ciascun nodo agente prima che quel nodo possa recuperare le configurazioni. I nodi agente richiederanno i certificati la prima volta che tenteranno di essere eseguiti.
Accedi al server del puppet master ed esegui il comando seguente per visualizzare le richieste in sospeso.
[root@server ~]# puppet cert list "client.itzgeek.local" (SHA256) D4:88:EC:C5:0A:F7:5D:4E:32:C5:B3:61:E0:51:7B:0C:CD:B3:49:9E:68:0B:E7:5D:75:19:1D:0B:92:8A:E7:C1
Esegui segno certificato pupazzo per firmare una richiesta o segno certificato pupazzo, tutto per firmare tutte le richieste in sospeso.
[root@server ~]# puppet cert sign client.itzgeek.local Notice: Signed certificate request for client.itzgeek.local Notice: Removing file Puppet::SSL::CertificateRequest client.itzgeek.local at '/var/lib/puppet/ssl/ca/requests/client.itzgeek.local.pem'
Esegui il seguente comando sul computer client per controllare il certificato
[root@client ~]# puppet agent -t Info: Caching certificate for client.itzgeek.local Info: Caching certificate_revocation_list for ca Info: Caching certificate for client.itzgeek.local Info: Retrieving pluginfacts Info: Retrieving plugin Info: Caching catalog for client.itzgeek.local Info: Applying configuration version '1445401911' Info: Creating state file /var/lib/puppet/state/state.yaml Notice: Finished catalog run in 0.09 seconds
È tutto. Ora hai configurato correttamente il burattinaio e un agente. È ora di creare un manifest (configurazione client). Resta sintonizzato.
Questo tutorial è per una vecchia versione di Puppet Master, alcuni collegamenti sono interrotti e potrebbero non funzionare come previsto. Una nuova versione è disponibile qui:Come installare Puppet 4.x su CentOS 7 / RHEL 7.