Puppet è uno strumento di gestione della configurazione open source che ci aiuta ad automatizzare l'infrastruttura IT, inclusi il provisioning, la gestione della configurazione, l'applicazione di patch a centinaia di sistemi client dalla posizione centrale.
Puppet è disponibile per i sistemi operativi Linux, Mac, BSD, Solaris e Windows. È scritto in lingua "Ruby" e rilasciato sotto licenza Apache,
Questa guida ti aiuta a installare Puppet su CentOS 8 / RHEL 8.
Architettura
Pupper è configurato in un'architettura agent-master. In questa architettura, i nodi gestiti eseguono il software dell'agente pupazzo, come servizio in background. D'altra parte, uno o più server eseguono l'applicazione master, ad es. Server delle marionette.
L'agente burattinaio invia periodicamente fatti al burattinaio e richiede un catalogo. Il master compila e restituisce il catalogo di quel particolare nodo, utilizzando le fonti di informazioni a cui ha accesso.
Ambiente
Qui configureremo un pupazzo nell'architettura del server/agente.
burattinaio
Nome host: puppetserver.itzgeek.local
Indirizzo IP: 192.168.0.10
Sistema operativo: CentOS 8
Client fantoccio
Nome host: client.itzgeek.local
Indirizzo IP: 192.168.0.20
Sistema operativo: CentOS 8
Prerequisiti
Installa NTP
I tempi dei nodi master e client dovrebbero essere sincronizzati accuratamente con il server NTP perché il server Puppet fungerà da autorità di certificazione.
Se devi configurare il server NTP, allora:
LEGGI: Come configurare il server NTP utilizzando Chrony
Se devi configurare il client NTP, allora:
LEGGI: Come configurare il client NTP utilizzando Chrony
Se necessario, cambia anche il fuso orario del sistema.
LEGGI :Come modificare il fuso orario in CentOS 8 / RHEL 8
DNS
L'agente Puppet utilizza il nome host per comunicare con il server Puppet. Quindi, assicurati che i nodi agente possano risolvere il nome host del Puppet Server con l'aiuto del file /etc/hosts o del server DNS.
Installa e configura il server dei pupazzi
Puppet Server è il software server che viene eseguito sul nodo master. Puppet Server controlla le configurazioni dei nodi gestiti (puppet-agent).
Aggiungi repository
Per installare il server dei pupazzi, dovremmo aggiungere il repository dei pupazzi installando il pacchetto di configurazione del repository.
rpm -Uvh https://yum.puppet.com/puppet6-release-el-8.noarch.rpm
Installa pupazzo
Installa il server Puppet utilizzando il comando seguente.
yum install -y puppetserver
Assegnazione della memoria
Per impostazione predefinita, Puppet Server è configurato per utilizzare 2 GB di memoria. Puoi modificare l'allocazione della memoria in base al numero di nodi ad essa collegati.
Per questa demo, assegnerò 512 MB di memoria.
Per modificare il valore dell'allocazione di memoria, modificare il file sottostante.
vi /etc/sysconfig/puppetserver
Modifica il valore.
Da:
JAVA_ARGS="-Xms2g -Xmx2g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger"
A:
Per 512 MB, utilizza le impostazioni seguenti.
JAVA_ARGS="-Xms512m -Xmx512m -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger"
Configura il server dei pupazzi
Il file di configurazione di Puppet è costituito da due sezioni denominate [master] e [main] rispettivamente per il server e l'agente Pupper.
vi /etc/puppetlabs/puppet/puppet.conf
Modifica il file in base al tuo ambiente. Gli agenti Pupper possono utilizzare qualsiasi nome host menzionato in dns_alt_names per connettersi al server Pupper.
# Pupper Server Configuration [master] dns_alt_names = puppetserver,puppetserver.itzgeek.local # Puppet Agent Configuration [main] certname = puppetserver.itzgeek.local server = puppetserver.itzgeek.local runinterval = 30m
Avvia il server dei pupazzi
Genera la CA di firma radice e intermedia per Puppet Server.
puppetserver ca setup
Output: Generation succeeded. Find your files in /etc/puppetlabs/puppet/ssl/caSe ottieni puppetserver:comando non trovato, esegui source /etc/profile.d/puppet-agent.sh nel terminale o disconnetti dalla sessione corrente ed effettua nuovamente il login.
Avvia e abilita il server dei pupazzi.
systemctl start puppetserver
systemctl enable puppetserver
Firewall
Il server Puppet è in ascolto sulla porta 8140. Quindi, configura il firewall per consentire agli agenti di connettersi al master.
firewall-cmd --permanent --add-port=8140/tcp
firewall-cmd --reload
Installa e configura Puppet Agent
Aggiungi repository
Per installare l'agente Puppet, dovremmo aggiungere il repository di puppet su tutti i nodi.
rpm -Uvh https://yum.puppet.com/puppet6-release-el-8.noarch.rpm
Installa agente
Installa l'agente pupazzo sul tuo client utilizzando il comando seguente.
dnf install -y puppet-agent
Modifica il file di configurazione del pupazzo e imposta le informazioni sul server dei pupazzi.
Imposta il valore del server in base al nome host del tuo server Puppet. Nel mio caso, il server è puppetserver.itzgeek.local e certname è il nome host del mio client (client.itzgeek.local).
vi /etc/puppetlabs/puppet/puppet.conf
Imposta come di seguito.
[main] server = puppetserver.itzgeek.local certname = client.itzgeek.local runinterval = 30m
È possibile modificare il valore di runinterval in base al requisito. Questa impostazione controlla per quanto tempo l'agente deve attendere tra le due richieste di catalogo. Puoi impostare il valore in secondi (10 o 10 secondi), minuti (10 minuti) e ore (1 ora).
Avvia l'agente pupazzo sul nodo e fallo partire automaticamente all'avvio del sistema.
puppet resource service puppet ensure=running enable=true
Output: Notice: /Service[puppet]/ensure: ensure changed 'stopped' to 'running' service { 'puppet': ensure => 'running', enable => 'true', provider => 'systemd', }Se ricevi puppet:comando non trovato, esegui il sorgente /etc/profile.d/puppet-agent.sh nel terminale o esci dalla sessione corrente e accedi nuovamente.
Firma certificato nodo agente sul server master
Dobbiamo approvare una richiesta di certificato proveniente da ciascun nodo. I nodi agente richiederanno i certificati per la prima volta se tentano di essere eseguiti.
Eseguire il comando seguente sul nodo dell'agente per effettuare una connessione iniziale. Puoi ignorare gli avvisi/gli errori.
puppet agent -t
Accedi al server Pupper ed esegui il comando seguente per visualizzare le richieste in sospeso.
puppetserver ca list
Output: Requested Certificates: client.itzgeek.local (SHA256) 06:D8:8E:AE:CA:0B:B1:E7:90:B5:B9:1B:75:3C:95:69:D8:EF:27:0A:5D:CC:45:BB:15:34:64:D2:6B:2C:CA:98
Esegui il comando puppet cert sign per firmare una richiesta.
puppetserver ca sign --certname client.itzgeek.local
Output: Successfully signed certificate request for client.itzgeek.local
Il server Puppet può ora comunicare con la macchina client e controllare il nodo.
Se hai più richieste di firma dai nodi, puoi firmare tutte le richieste in un comando.
puppetserver ca sign --all
A volte, potrebbe essere necessario revocare il certificato di un particolare nodo per rileggerlo.
Sostituisci
puppetserver ca revoke --certname AGENT_NAME
Puoi elencare tutte le richieste firmate e non firmate con il comando seguente.
puppetserver ca list --all
Output: Signed Certificates: puppetserver.itzgeek.local (SHA256) E6:2C:6C:1E:9B:C6:AA:D9:84:09:F3:67:45:1B:36:C6:1F:FB:46:5F:92:64:37:19:E3:74:0C:0D:29:D5:C5:F6 alt names: ["DNS:puppetserver.itzgeek.local", "DNS:puppetserver", "DNS:puppetserver.itzgeek.local"] authorization extensions: [pp_cli_auth: true] client.itzgeek.local (SHA256) EF:D8:1A:F2:E9:56:A3:1F:DA:A9:8D:9B:71:02:D8:52:F1:44:98:92:A7:5F:DE:FC:5F:55:37:97:EC:9C:9A:96
Verifica client pupazzo
Una volta che Puppet Server ha firmato il certificato client, esegui il seguente comando sul computer client per testarlo.
puppet agent --test
Output: Info: Using configured environment 'production' Info: Retrieving pluginfacts Info: Retrieving plugin Info: Retrieving locales Info: Caching catalog for client.itzgeek.local Info: Applying configuration version '1591351483' Notice: Applied catalog in 0.01 seconds
Conclusione
Questo è Al. Spero che tu abbia imparato come installare Puppet su CentOS 8 / RHEL 8. Come ulteriore lettura, scopri come creare un semplice file manifest per creare un file e una directory sul nodo client. Condividi il tuo feedback nella sezione commenti.