Puppet è uno strumento di gestione della configurazione open source e un framework di automazione del server. Puppet può essere eseguito su sistemi operativi simili a Unix, nonché su sistemi Microsoft Windows. Ti permette di gestire ed eseguire attività amministrative e la configurazione di centinaia di sistemi da un server master.
In questo tutorial ti spiegherò come installare Puppet su CentOS 8. Installerò e configurerò un server CentOS 8 come "master" dei pupazzi e l'altro come "agente".
Prerequisiti
- 2 o più server CentOS 8
- Privilegi di root
Cosa faremo:
- Preinstallazione del pupazzo
- Installa e configura il server dei pupazzi
- Installa e configura Puppet Agent
- Verifica configurazione agente pupazzi
- Crea il primo manifesto delle marionette
Passaggio 1 - Preinstallazione del pupazzo
In questo primo passaggio, prepareremo i server master e agent per l'installazione del pupazzo. Imposteremo host e FQDN del server, configureremo il server NTP e aggiungeremo il repository dei pupazzi per il server CentOS 8.
Imposta nomi host
In primo luogo, configureremo host e FQDN per entrambi i server. Il burattinaio avrà un nome host 'master' con l'FQDN 'master.hakase-labs.io' e l'agente avrà il nome host 'agent01' con l'FQDN 'agent01.hakase-labs.io'.
Imposta il nome host usando il comando 'hostnamectl' di seguito.
hostnamectl set-hostname hostname
Successivamente, modifica il file '/etc/hosts' per configurare il server FQDN.
vim /etc/hosts
Modifica l'indirizzo IP e il nome di dominio con il tuo e incollalo.
10.5.5.21 master.hakase-labs.io master
10.5.5.22 agent01.hakase-labs.io agent01
Salva e chiudi.
Ora riavvia il servizio con nome host per applicare un nuovo nome host e FQDN.
systemctl restart systemd-hostnamed
E dopo, controlla il nome host e l'FQDN usando il seguente comando.
hostname
hostname -f
E otterrai un nuovo nome host e FQDN è stato configurato e applicato al sistema.
Imposta il server NTP
Per il server NTP, useremo "chrony" per i nostri server.
Installa chrony usando il comando dnf di seguito.
dnf install chrony
Dopodiché, modifica la configurazione chrony '/etc/chrony.conf' usando l'editor vim.
vim /etc/chrony.conf
Ora cambia il server del pool con il pool più vicino del tuo paese. Puoi controllare l'NTP del pool disponibile utilizzando 'https://www.pool.ntp.org/zone/COUNTRYID'.
Copia tutti i server NTP disponibili del tuo paese e incollali nel file 'chrony.conf' come di seguito.
server 0.id.pool.ntp.org iburst
server 1.id.pool.ntp.org iburst
server 2.id.pool.ntp.org iburst
server 3.id.pool.ntp.org iburst
Salva e chiudi.
Ora avvia il servizio chronyd e aggiungilo all'avvio dell'avvio.
systemctl start chronyd
systemctl enable chronyd
La configurazione del server NTP è stata completata.
Aggiungi repository di pupazzi per CentOS 8
Per il server CentOS 8 del repository puppet, puoi installarlo manualmente usando il comando rpm come di seguito.
sudo rpm -Uvh https://yum.puppet.com/puppet6-release-el-8.noarch.rpm
Successivamente, controlla tutti i repository disponibili sul sistema utilizzando il comando dnf di seguito.
dnf repolist
E otterrai che il repository dei pupazzi è stato aggiunto al sistema CentOS 8.
Disabilita SELinux
Per disabilitare SELinux, puoi modificare la configurazione '/etc/sysconfig/selinux' usando vim editor.
vim /etc/sysconfig/selinux
Ora cambia la configurazione del valore 'SELINUX' in "disabilitato".
SELINUX=disabled
Salva e chiudi, quindi riavvia il server.
sudo reboot
Dopo aver effettuato nuovamente l'accesso, controlla lo stato di SELinux usando il seguente comando.
sestatus
E otterrai lo stato di SELinux disabilitato.
Passaggio 2:installazione e configurazione di Puppetserver
In questo passaggio installeremo e configureremo il puppetserver sul nodo principale.
Installa il server delle marionette utilizzando il comando dnf di seguito.
sudo dnf install puppetserver
Dopodiché, dobbiamo modificare le "impostazioni init" per puppetserver e modificare l'allocazione della memoria in base alla RAM che abbiamo.
Modifica l'impostazione init di puppetserver che si trova in '/etc/sysconfig/puppetserver' usando l'editor vim.
vim /etc/sysconfig/puppetserver
Ora cambia la configurazione 'JAVA_ARGS' per l'allocazione della memoria a seconda della tua RAM.
JAVA_ARGS="-Xms1g -Xmx1g ...."
Salva e chiudi.
Quindi, vai alla directory '/etc/puppetlabs' e modifica il file di configurazione del pupazzo 'puppet.conf'.
cd /etc/puppetlabs/
vim puppet/puppet.conf
Nella configurazione master, definire i nomi alternativi DNS con l'FQDN del server master.
[master]
....
dns_alt_names=master.hakase-labs.io,puppet
....
Successivamente, definisci la configurazione del server principale del pupazzo come di seguito.
[main]
certname = master.hakase-labs.io
server = master.hakase-labs.io
environment = production
runinterval = 1h
Salva e chiudi.
Ora aggiungi il servizio puppetserver all'avvio dell'avvio e avvia il servizio.
systemctl enable puppetserver
systemctl start puppetserver
Il puppetserver è attivo e funzionante sul server CentOS 8 con la porta TCP predefinita "8140".
Aggiungi la porta del server dei puppet '8140' al firewalld usando il comando seguente.
firewall-cmd --add-port=8140/tcp --permanent
firewall-cmd --reload
Di conseguenza, l'installazione e la configurazione del burattinaio sono state completate correttamente.
Passaggio 3:installazione e configurazione di Puppet Agent
Dopo aver installato il server master dei pupazzi "master.hakase-labs.io", installeremo un agente dei pupazzi sul server "agent01".
Accedi al server 'agent01' e installa il pacchetto puppet-agent utilizzando il comando dnf di seguito.
sudo dnf install puppet-agent
Successivamente, vai nella directory '/etc/puppetlabs' e modifica il file di configurazione 'puppet.conf' usando l'editor vim.
cd /etc/puppetlabs/
vim puppet/puppet.conf
Modifica la configurazione 'certname' e 'server' con la tua e incollala nella configurazione.
[main]
certname = agent01.hakase-labs.io
server = master.hakase-labs.io
environment = production
runinterval = 1h
Salva e chiudi.
Quindi, avvia il servizio puppet e registra l'agente puppet sul server master utilizzando il comando seguente.
/opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true
E otterrai il risultato come di seguito.
L'agente dei pupazzi è ora attivo e funzionante, sta tentando di registrarsi sul server master dei pupazzi.
Ora torna al server Puppet master e controlla le richieste di certificati in sospeso.
/opt/puppetlabs/bin/puppetserver ca list
E otterrai il certificato "agent01.hakase-labs.io" nell'elenco.
Ora firma il certificato 'agent01' usando il comando qui sotto.
/opt/puppetlabs/bin/puppetserver ca sign --certname agent01.hakase-labs.io
E l'agente fantoccio è stato registrato sul server principale.
Passaggio 4:verifica della configurazione dell'agente dei pupazzi
Ora verifica la configurazione dell'agente pupazzo e verifica la connessione tra l'agente pupazzo e il master utilizzando il comando seguente.
/opt/puppetlabs/bin/puppet agent --test
E otterrai il risultato come di seguito.
Di conseguenza, l'agente Puppet ha estratto la configurazione dal burattinaio e l'ha applicata al server senza alcun errore.
Passaggio 5:crea il primo manifesto
A questo punto, l'installazione e la configurazione di Puppet per master e agent sono state completate.
E per questo passaggio, testeremo la nostra configurazione creando il primo manifest del pupazzo per l'installazione del pacchetto httpd.
Vai alla directory '/etc/puppetlabs/code/environments/production/manifests' e crea il primo file manifest del pupazzo 'httpd.pp'.
cd /etc/puppetlabs/code/
cd environments/production/manifests
vim httpd.pp
Incolla la seguente configurazione.
node 'agent01.hakase-labs.io' {
package { 'httpd':
ensure => "installed",
}
service { 'httpd':
ensure => running,
enable => true
}
}
Salva e chiudi.
Ora vai al nodo dell'agente Puppet 'agento01' ed esegui il comando seguente.
/opt/puppetlabs/bin/puppet agent --test
E ti verrà mostrato il risultato come di seguito.
L'agente Puppet ha estratto una nuova configurazione dal Puppet master per installare il pacchetto httpd e avviare il servizio httpd.
Sul nodo 'agent01', controlla lo stato del servizio httpd e controlla la porta HTTP '80'
systemctl status httpd
netstat -plntu
E otterrai che il servizio httpd è attivo e funzionante sul server "agent01" con la porta HTTP predefinita "80". Il pacchetto httpd è stato installato tramite il manifest del pupazzo che abbiamo creato in alto.
Di conseguenza, l'installazione e la configurazione del Puppet master e dell'agente sul server CentOS 8 sono state completate correttamente.