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

Come installare Puppet 6.x su CentOS 7 / RHEL 7

Puppet è uno strumento di gestione della configurazione open source che ti aiuta a gestire le configurazioni di centinaia di sistemi client dalla posizione centrale.

Puppet semplifica la vita dell'amministratore riducendo il tempo dedicato alle attività ripetitive e consente loro di concentrarsi su altri lavori, inoltre garantisce che la configurazione distribuita sia coerente in tutta l'infrastruttura.

Puppet è disponibile per sistemi di computer basati su Linux, Mac, BSD, Solaris e Windows, rilasciato con licenza Apache, scritto in linguaggio "Ruby".

Questa guida ti aiuta a installare Puppet 6.x su CentOS 7 / RHEL 7.

Architettura

Agente/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.

L'architettura a sé stante

In questa architettura, ogni nodo gestito ha la sua copia delle informazioni di configurazione e compila il suo catalogo. Esegue l'applicazione puppet Apply come cron job.

Ambiente

Qui configureremo un pupazzo nell'architettura del server/agente.

Maestro burattinaio

Nome host: server.itzgeek.local
Indirizzo IP: 192.168.1.10
Sistema operativo: CentOS 7.6

Cliente fantoccio

Nome host: client.itzgeek.local
Indirizzo IP: 192.168.1.20
Sistema operativo: CentOS 7.6

Prerequisiti

Installa NTP

Gli orari dei nodi master e client devono essere sincronizzati accuratamente con i server orari a monte, poiché il master del server master Puppet fungerà da autorità di certificazione.

(Se l'ora è sbagliata, potrebbe emettere erroneamente certificati di agente dalla data passata o futura lontana, che gli altri nodi tratteranno come scaduti.)

Installa il pacchetto NTP ed esegui la sincronizzazione dell'ora con i server NTP a monte.

yum -y install ntpdate
ntpdate 0.centos.pool.ntp.org
Assicurati che tutti i nodi siano nello stesso fuso orario utilizzando data comando. In caso di discrepanze, modificarle di conseguenza.

LEGGI :Come modificare il fuso orario in CentOS 7 / RHEL 7

DNS

L'agente dei pupazzi utilizza il nome host per comunicare con il server dei pupazzi. Quindi, assicurati che i nodi agente possano risolvere il nome host di Puppet Server con l'aiuto di /etc/hosts file o server DNS.

Imposta il repository dei pupazzi

Per installare il server/agenti dei pupazzi, dovremmo aggiungere il repository dei pupazzi su tutti i nodi.

Imposta il repository di Puppet sia sul nodo principale che su quello agente.
rpm -Uvh https://yum.puppet.com/puppet6-release-el-7.noarch.rpm

Installa il server dei pupazzi

Puppet Server è il software server che viene eseguito sul nodo master puppet. Puppetmaster invia le configurazioni ai nodi gestiti (puppet-agent).

Installa il server Puppet utilizzando il comando seguente.

yum install -y puppetserver

Il server dei pupazzi è ora installato, non avviare ancora il servizio del server dei pupazzi.

Configura il server dei pupazzi

Assegnazione della memoria

Per impostazione predefinita, Puppet Server JVM è configurato per utilizzare 2 GB di memoria. Puoi cambiarlo, dipende da quanta memoria disponibile sul tuo nodo master; assicurati che sia sufficiente per gestire tutti i nodi ad esso collegati.

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"

Server Web incorporato

Puppet Server utilizza un server Web basato su Jetty integrato nel processo JVM del servizio. Non è necessario configurare o abilitare il server web; funziona fuori dagli schemi. Funziona bene con carichi a livello di produzione.

Le impostazioni del server Web incorporato possono essere modificate in webserver.conf. Potrebbe essere necessario modificare questo file se si utilizza una CA esterna o se si esegue Puppet Server su una porta non standard.

Configurazione pupazzi

Configurazioni semplici

Puppet Server non richiede alcuna configurazione. Puoi semplicemente avviare il servizio del server Puppet. Utilizzerà le impostazioni predefinite.

Il nome host predefinito del server dei pupazzi (dns_alt_names) è puppet, quindi è necessario utilizzare server =puppet nel file di configurazione dell'agente puppet.

Se desideri modificare il nome host del burattinaio, segui la procedura seguente.

Configurazioni avanzate (opzionale)

Qui, modificherò le impostazioni del burattinaio per le nostre esigenze.

vi /etc/puppetlabs/puppet/puppet.conf

Posiziona le righe sottostanti. Modificalo in base al tuo ambiente.

[master]
dns_alt_names = server.itzgeek.local,server

[main]
certname = server.itzgeek.local
server = server.itzgeek.local
environment = production
runinterval = 1h

Avvia il server dei pupazzi

Genera una CA di firma radice e intermedia per Puppet Server.

puppetserver ca setup

Risultato:

Generation succeeded. Find your files in /etc/puppetlabs/puppet/ssl/ca
Se ottieni puppetserver:comando non trovato, esegui il sorgente /etc/profile.d/puppet-agent.sh nel terminale o esci dalla sessione corrente ed effettua nuovamente il login.

Avvia e abilita il server dei pupazzi.

systemctl start puppetserver
systemctl enable puppetserver

Firewall

Il Puppet Master è in ascolto sulla porta 8140, quindi configura il firewall in modo tale che i nodi gestiti possano connettersi al master.

firewall-cmd --permanent --add-port=8140/tcp
firewall-cmd --reload

Installa l'agente pupazzo

Installa l'agente pupazzo sul tuo client utilizzando il comando seguente.

yum install -y puppet-agent

L'agente Puppet utilizza anche alcune delle impostazioni predefinite per connettersi al nodo master. Tuttavia, dobbiamo modificare il file di configurazione del pupazzo e impostare le informazioni sul master del pupazzo.

Imposta server valore secondo il nome del tuo nodo master. Nel mio caso, il server è server.itzgeek.local e nomecertificato è il nome host del mio client (client.itzgeek.local ).
vi /etc/puppetlabs/puppet/puppet.conf

Imposta come di seguito.

[main]
certname = client.itzgeek.local
server = server.itzgeek.local
environment = production
runinterval = 1h

Puoi modificare il valore di runinterval dipende dal requisito. Puoi impostare il valore in secondi (10 o 10s), minuti (10m) e ore (1h). Questa impostazione controlla per quanto tempo l'agente deve attendere tra le due richieste di catalogo.

Avvia l'agente pupazzo sul nodo e fallo partire automaticamente all'avvio del sistema.

puppet resource service puppet ensure=running enable=true

Risultato:

Notice: /Service[puppet]/ensure: ensure changed 'stopped' to 'running'
service { 'puppet':
  ensure => 'running',
  enable => 'true',
}
Se ricevi puppet:comando non trovato, esegui il sorgente /etc/profile.d/puppet-agent.sh nel terminale o esci dalla sessione corrente ed effettua nuovamente il login.

Firma certificato del nodo agente sul server principale

In una distribuzione agente/master, un amministratore deve approvare una richiesta di certificato proveniente da ciascun nodo in modo che possa recuperare le configurazioni. I nodi agente richiederanno i certificati per la prima volta se tentano di essere eseguiti.

Accedi al server del puppet master ed esegui il comando seguente per visualizzare le richieste in sospeso.

puppetserver ca list

Risultato:

client.itzgeek.local   (SHA256)  A6:0E:93:51:FF:53:C8:FA:63:70:72:53:B6:1E:1B:A8:49:79:37:7E:57:00:02:AE:32:44:22:BE:97:F5:08:09

Esegui il comando puppet cert sign per firmare una richiesta.

puppetserver ca sign --certname client.itzgeek.local

Risultato:

Successfully signed certificate request for client.itzgeek.local

Il burattinaio ora può 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 con il nome host del tuo cliente.

puppetserver ca revoke --certname <AGENT_NAME>

Puoi elencare tutte le richieste firmate e non firmate con il comando seguente.

puppetserver ca list --all

Risultato:

server.itzgeek.local   (SHA256)  6E:90:94:6F:31:4F:8C:2A:28:90:D5:C0:6D:71:18:65:5E:86:DE:1C:16:9C:7C:30:8F:BF:DA:87:2D:F7:2C:26    alt names: ["DNS:server.itzgeek.local", "DNS:server", "DNS:server.itzgeek.local"]
client.itzgeek.local   (SHA256)  A6:08:36:5C:DB:73:0D:16:BA:5B:0D:72:76:FD:C7:31:DD:87:6F:EC:D4:4F:7A:87:E9:4F:73:70:D0:09:6E:61

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

Risultato:

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 '1558878523'
Notice: Applied catalog in 0.03 seconds

Creazione del nostro primo manifest

Manifest è un file di dati che contiene le configurazioni del client, scritte nel linguaggio dichiarativo di Puppet o in un Ruby DSL. Questa sezione tratta alcuni manifest di base per creare una directory e un file sul nodo gestito.

Il file manifest principale del pupazzo si trova in /etc/puppetlabs/code/environments/production/manifests/site.pp.

vi /etc/puppetlabs/code/environments/production/manifests/site.pp

Ora aggiungi le seguenti righe al manifest per creare una directory sul nodo gestito.

Se la variabile node non è impostata, questo manifest si applicherà a tutti i nodi connessi al burattinaio.
node 'client.itzgeek.local' { # Applies only to mentioned node; if nothing mentioned, applies to all.
file { '/tmp/puppetesttdir': # Resource type file
 ensure => 'directory', # Create as a diectory
 owner => 'root', # Ownership
 group => 'root', # Group Name
 mode => '0755', # Directory permissions
}
}

Ora, esegui il seguente comando sul nodo client per recuperare le configurazioni.

puppet agent --test

Risultato:

Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for client.itzgeek.local
Info: Applying configuration version '1472165498'
Notice: /Stage[main]/Main/Node[client.itzgeek.local]/File[/tmp/puppetesttdir]/ensure: created
Notice: Applied catalog in 0.03 seconds

Verificare che la directory sia stata creata sul nodo gestito.

[root@client ~]# ls -ld /tmp/puppetesttdir
drwxr-xr-x. 2 root root 6 May 26 09:57 /tmp/puppetesttdir

Effettuiamo il test ancora una volta scrivendo il manifest per creare un file con contenuto al suo interno.

node 'client.itzgeek.local' { # Applies only to mentioned node; if nothing mentioned, applies to all.
file { '/tmp/puppettestfile': # Resource type file
 ensure => 'present', # Make sure it exists
 owner => 'root', # Ownership
 group => 'root', # Group Name
 mode => '0644', # File permissions
 content => "This File is created by Puppet Server"
}
}

È possibile accedere alla macchina client e recuperare il catalogo come mostrato nell'esempio precedente oppure l'agente Puppet riceverà periodicamente il manifest da Puppet Server a seconda dell'intervallo di esecuzione hai impostato nel file di configurazione.

Conclusione

Spero che tu abbia imparato come installare Puppet Server e Agent su CentOS 7 / RHEL 7. Inoltre, hai imparato a creare un semplice file manifest per creare una directory sul nodo client. Condividi il tuo feedback nella sezione commenti.


Cent OS
  1. Come installare il server di posta Postfix su RHEL 8 / CentOS 8

  2. Come installare il server DNS su RHEL 8 / CentOS 8 Linux

  3. Come installare Puppet su CentOS 8 / RHEL 8

  4. Come installare Puppet su RHEL 8/CentOS 8

  5. CentOS / RHEL 7:come installare la GUI

Come installare Zabbix Server 4.x su CentOS 6 / RHEL 6

Come installare Jetty Web Server su CentOS 7 / RHEL 7

Come installare Zabbix Server 5.0/4.0 su CentOS 7/RHEL 7

Come installare il server VNC su CentOS 8 / RHEL 8

Come installare Zabbix Server 5.0 / 4.0 su CentOS 8 / RHEL 8

Come installare il server dei pupazzi su CentOS 7