GNU/Linux >> Linux Esercitazione >  >> Cent OS

Installa e configura Puppet su CentOS 7 / RHEL 7

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.

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 ", premi ctrl-C per terminare il processo.

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.
Cent OS
  1. Installa e configura HAProxy su RHEL 8 / CentOS 8 Linux

  2. Come installare e configurare R sul sistema Linux RHEL 8 / CentOS 8

  3. Installa e configura il server FTP su CentOS 7 / RHEL 7 – (vsftpfd)

  4. CentOS / RHEL 7 :Come installare e configurare telnet

  5. Come installare e configurare Samba in CentOS/RHEL

Come installare e configurare Nagios Core su CentOS 8 / RHEL 8

Come installare e configurare il server VNC in CentOS 7 / RHEL 7

Installa e configura GlusterFS su CentOS 7 / RHEL 7

Come installare e configurare Jenkins su CentOS 8 / RHEL 8

Come installare e configurare MariaDB in CentOS / RHEL 7

Come installare e configurare il server VNC su CentOS/RHEL 8