GNU/Linux >> Linux Esercitazione >  >> Debian

Come installare Puppet 6.x su Ubuntu 18.04 / Ubuntu 16.04 e Debian 9

Quando pensi a uno strumento di gestione della configurazione, quello che ti viene in mente è Puppet. Puppet è uno strumento di gestione della configurazione open source, che ti aiuta a distribuire e gestire le configurazioni di centinaia di sistemi client dalla posizione centrale.

Puppet semplifica la vita dell'amministratore di sistema riducendo il tempo impiegato per attività ripetitive e consente loro di lavorare su altri lavori produttivi, inoltre garantisce che tutta la configurazione 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 Server su Ubuntu 18.04 / Ubuntu 16.04 e Debian 9.

Architettura

Agente/Master

In questa architettura, uno o più server eseguono l'applicazione puppet master e l'applicazione puppet agent viene eseguita su nodi gestiti (server client), in genere come servizio in background.

L'agente dei burattini invierà i fatti al burattinaio e richiederà un catalogo nell'intervallo particolare. Il burattinaio compilerà e restituirà il catalogo di quel particolare nodo, utilizzando le fonti di informazioni a cui ha accesso.

Architettura autonoma

In questa architettura, il nodo client esegue l'applicazione puppet apply, di solito come cron job.

Ambiente

Qui configureremo un pupazzo in architettura master/agent e utilizzeremo due sistemi, come indicato di seguito.

Maestro burattinaio

Nome host: server.itzgeek.local

Indirizzo IP: 192.168.1.10

Cliente fantoccio

Nome host: client.itzgeek.local

Indirizzo IP: 192.168.1.20

Prerequisiti

Installa NTP

L'ora deve essere impostata con precisione su un burattinaio poiché fungerà da autorità di certificazione per firmare i certificati provenienti dai nodi client. Useremo NTP per questo scopo.

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

sudo apt update
sudo apt install -y ntp ntpdate
sudo ntpdate -u 0.ubuntu.pool.ntp.org

Fuso orario

Assicurati che tutti i nodi siano nello stesso fuso orario usando.

date

Risultato:

Tue Sep 4 22:28:34 EDT 2018

In caso di discrepanze, modificarle di conseguenza. Elenca i fusi orari disponibili.

timedatectl list-timezones

Imposta il fuso orario usando il seguente comando.

sudo timedatectl set-timezone America/New_York

DNS

L'agente dei pupazzi utilizza il nome host per comunicare con il server dei pupazzi. Quindi, assicurati che il nodo agente possa risolvere il nome host del Puppet Server. O imposta /etc/hosts file o server DNS.

File/etc/hosts:

sudo nano /etc/hosts

Aggiungi una voce host simile alla riga seguente.

192.168.1.10 server.itzgeek.local server

Imposta repository PuppetLabs

Per installare il puppet master/agent, avremmo bisogno di impostare un repository di puppet su tutti i nodi.

### Ubuntu 18.04 ###

wget https://apt.puppetlabs.com/puppet6-release-bionic.deb
sudo dpkg -i puppet6-release-bionic.deb
sudo apt update

### Ubuntu 16.04 ###

wget https://apt.puppetlabs.com/puppet6-release-xenial.deb
sudo dpkg -i puppet6-release-xenial.deb
sudo apt update

### Debian 9 ###

wget https://apt.puppetlabs.com/puppet6-release-stretch.deb
sudo dpkg -i puppet6-release-stretch.deb
sudo apt update

In Ubuntu 18.04, abilita il repository dell'universo, che contiene i pacchetti necessari per Puppet Server.

Installa il server dei pupazzi

Puppet Server è il software server che viene eseguito sul nodo master puppet. Installa il server Puppet utilizzando il comando seguente.

sudo apt install -y puppetserver

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

Configura il server dei pupazzi

Assegnazione memoria (opzionale)

Per impostazione predefinita, Puppet Server JVM è configurato per utilizzare 2 GB di RAM. Puoi sempre personalizzare l'utilizzo della memoria in base alla quantità di memoria del 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.

sudo nano /etc/default/puppetserver

Modifica il valore mostrato come di seguito.

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"

Configurazione pupazzi

Configurazioni semplici

Puppet Server non richiede alcuna configurazione e puoi semplicemente avviare il servizio puppetserver. Utilizzerà le impostazioni predefinite.

Ad esempio:dns_alt_names (pupazzo, ) .

Puppet prenderà il nome host e il pupazzo del tuo sistema come nomi alternativi DNS per Puppet Server. Quindi, dovresti usare server= o server=puppet nel file di configurazione puppet-agent.

Configurazioni avanzate (facoltative)

Qui, modificherò le impostazioni del server dei pupazzi per le nostre esigenze.

sudo nano /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 = 15m

Avvia il server dei pupazzi

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

sudo /opt/puppetlabs/bin/puppetserver ca setup

Risultato:

Generation succeeded. Find your files in /etc/puppetlabs/puppet/ssl/ca

Avvia e abilita il server dei pupazzi.

sudo systemctl start puppetserver
sudo systemctl enable puppetserver

Installa l'agente pupazzo

Configura il repository Puppet sul tuo nodo agente come mostrato in precedenza, quindi installa l'agente puppet utilizzando il comando seguente.

sudo apt 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.

sudo nano /etc/puppetlabs/puppet/puppet.conf
Imposta server valore secondo il tuo nome host principale e nomecert come nome host del tuo cliente. Nel mio caso, il server è server.itzgeek.local e certname è client.itzgeek.local.
[main]
certname = client.itzgeek.local
server = server.itzgeek.local
environment = production
runinterval = 15m

Puoi modificare il valore di runinterval dipende dal requisito. Questo controlla per quanto tempo un agente deve attendere tra le due richieste di catalogo.

È possibile impostare il valore in secondi (30 secondi o 30) o in minuti (30 minuti) o in ore (1 ora).

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

sudo /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true

Otterresti un output come di seguito.

Notice: /Service[puppet]/ensure: ensure changed 'stopped' to 'running'
service { 'puppet':
 ensure => 'running',
 enable => 'true',
}

Firma certificato del nodo agente sul server principale

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 per 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.

sudo /opt/puppetlabs/bin/puppetserver ca list

Risultato:

Requested Certificates:
    client.itzgeek.local   (SHA256)  07:B1:57:5B:DE:AF:9F:4A:DF:4A:D1:CD:C4:2A:F9:9F:D9:76:CD:C5:F1:60:09:9C:B4:BA:76:D6:7B:3C:6F:0D

Esegui il comando seguente per firmare una richiesta.

sudo /opt/puppetlabs/bin/puppetserver ca sign --certname client.itzgeek.local

Risultato:

Successfully signed certificate request for client.itzgeek.local

Per firmare tutte le richieste di firma del certificato in un unico comando.

sudo /opt/puppetlabs/bin/puppetserver ca sign --all

In alcuni casi, potrebbe essere necessario revocare il certificato di un particolare nodo per rileggerlo. Sostituisci con il nome host del tuo cliente.

sudo /opt/puppetlabs/bin/puppetserver ca revoke --certname <AGENT_NAME>

Elenca tutte le richieste firmate e non firmate. Dovresti essere eseguito sul server principale.

sudo /opt/puppetlabs/bin/puppetserver ca list --all

Risultato:

Signed Certificates:
    server.itzgeek.local   (SHA256)  E5:A4:93:45:EF:82:3B:FF:6E:36:D2:9A:F0:75:15:67:94:33:06:2F:84:9F:D1:45:CE:C6:1C:86:D4:57:B8:25    alt names: ["DNS:server.itzgeek.local", "DNS:server", "DNS:server.itzgeek.local"]
    client.itzgeek.local   (SHA256)  AB:3B:F0:D0:62:69:50:DD:50:45:CE:AD:A5:2C:4F:9E:EB:19:D6:C6:9C:34:A3:C5:CD:84:8F:BA:50:04:4A:D0

Verifica agente pupazzo

Una volta che il Puppet Master ha firmato il certificato client, esegui il seguente comando sul computer client per testarlo.

sudo /opt/puppetlabs/bin/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 '1558888335'
Notice: Applied catalog in 0.02 seconds

Crea 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 il manifest di base per creare una directory e un file sul computer client.

Il file manifest principale del pupazzo si trova in /etc/puppetlabs/code/environments/production/manifests directory. Crea un nuovo file manifest.

sudo nano /etc/puppetlabs/code/environments/production/manifests/site.pp

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

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

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

sudo /opt/puppetlabs/bin/puppet agent --test

Uscita:

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 '1558888460'
Notice: /Stage[main]/Main/Node[client.itzgeek.local]/File[/tmp/puppetdir]/ensure: created
Notice: Applied catalog in 0.16 seconds

Verifica che la directory sia stata creata sul nodo client.

ls -ld /tmp/puppetdir/

Risultato:

drwxr-xr-x 2 root root 4096 May 26 22:03 /tmp/puppetdir/

Scriviamo un 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/puppetfile': # 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" # Content of the file
           }
}

Puoi andare sulla macchina client e recuperare il catalogo come mostrato nell'esempio precedente o attendere 15 minuti per applicare automaticamente il catalogo.

Conclusione

Spero che questo post ti abbia aiutato a installare Puppet Server su Ubuntu 18.04 / Ubuntu 16.04 e Debian 9. Condividi il tuo feedback nella sezione commenti.


Debian
  1. Come installare Redis Server su Debian 11

  2. Come installare Puppet 6.x su Ubuntu 18.04 / Ubuntu 16.04 e Debian 9

  3. Come installare MySQL 8.0 / 5.7 su Debian 11 / Debian 10

  4. Come installare ProFTPD su Debian 8

  5. Come installare MySQL Server su Debian 9

Come installare FastPanel su Debian 11

Come installare I2P su Debian Server:

Come installare VNC su Debian 10

Come installare il server VNC su Debian 11

Come installare Mongoku su Ubuntu 20.04 / Debian 11

Come installare ODBC su Ubuntu 20.04 / Debian 11?