Installazione e configurazione di Puppet server, PuppetDB e PostgreSQL su containers LXC con Debian 11

by | Nov 20, 2023

Puppet è un software per la gestione della configurazione delle macchine client e server.
Esiste una versione enterprise di Puppet ed una versione open source.
Puppet funziona tramite un agent che viene installato sulle macchine e che periodicamente (di default ogni 30 minuti) applica le configurazioni distribuite dal server per mezzo di cataloghi.
I cataloghi sono composti da classi scritte in un “declarative language” specifico di Puppet.
Le classi sono raggruppate in moduli. È possibile scaricare dei moduli open source da Puppet Forge oppure sviluppare i propri tramite Puppet PDK.
All’interno di ogni classe vengono dichiarate delle risorse e lo stato di quest’ultime.
Le risorse possono essere di diversa natura ed in base al tipo di risorsa vengono intraprese diverse azioni dall’agent per mantenere lo stato richiesto.

ARCHITETTURA

Per la seguente installazione verranno utilizzati tre containers LXC uno per Puppet server, uno per PuppetDB e uno per il database PostgreSQL.
È possibile installare i due componenti di Puppet e il DB su un unico server, in base alle necessità, tuttavia la configurazione presa in considerazione in questa guida permette una maggiore scalabilità.
Tutti i container sono stati installati con Debian 11.
Se è necessario che Puppet server venga esposto su internet, si consiglia di collocare il container 01.puppet.pizza.it in DMZ.

PORTE UTILIZZATE

01.puppet.pizza.it:

TCP/8140 HTTPS Puppet server

puppetdb01.pizza.local: TCP/8140 HTTPS PuppetDB

pgsql.pizza.local: TCP/5432 PostgreSQL

FLUSSI DA ABILITARE

pgsql.pizza.local -> 01.puppet.pizza.it: TCP/8140
puppetdb01.pizza.local -> 01.puppet.pizza.it: TCP/8140
puppetdb01.pizza.local -> pgsql.pizza.local: TCP/5432
01.puppet.pizza.it -> puppetdb01.pizza.local: TCP/8140

INSTALLAZIONE

Collegarsi all’host 01.puppet.pizza.local.

Aggiornare il sistema operativo con i seguenti comandi:

Modificare l’entry relativa al localhost nel file hosts:

Aggiungere nel file hosts (in alternativa è possibile usare il DNS):

INSTALLAZIONE DI PUPPET SERVER

Aggiungere le repository di Puppet

Installare il pacchetto Puppet Server con il comando:

Decidere quanta memoria allocare per il server.

Ref: Puppet Site

Modificare in /etc/default/puppetserver i seguenti parametri:

Decommentare le seguenti righe in /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf

Modificare la seguente riga in /etc/puppetlabs/puppetserver/conf.d/ca.conf

Aggiungere in /etc/puppetlabs/puppet/puppet.conf il seguente output:

Configurare la CA ed il catalogo del nodo di default con i seguenti comandi in sequenza:

Successivamente sarà necessario configurare PostgreSQL e PuppetDB.
Verrà utilizzato un modulo open source, scaricato da Puppet Forge, per installare PostgreSQL e configurare PuppetDB.

INSTALLAZIONE DI PUPPETDB

Collegarsi agli host pgsql.pizza.local e puppetdb01.pizza.local

Aggiornare il sistema operativo con i seguenti comandi:

Aggiungere le repository di Puppet con i seguenti comandi:

Installare il Puppet agent con il comando:

Aggiungere nel file hosts (in alternativa è possibile usare il DNS):

Collegarsi all’host pgsql.pizza.local ed aggiungere al file /etc/puppetlabs/puppet/puppet.conf il seguente output:

Collegarsi all’host puppetdb01.pizza.local ed aggiungere al file /etc/puppetlabs/puppet/puppet.conf il seguente output:

Aggiungere nel file hosts (in alternativa è possibile usare il DNS):

Sugli hosts pgsql.pizza.local e puppetdb01.pizza.local eseguire l’agent con i seguenti comandi:

A questo punto gli agents sono correttamente installati su entrambe le macchine.
Sarà possibile continuare l’installazione sul Puppet master.

Collegarsi all’host 01.puppet.pizza.local e firmare i certificati dei due nuovi agents con i seguenti comandi:

Installare il modulo necessario alla configurazione di PuppetDB con il comando:

Aggiungere il file /etc/puppetlabs/code/environments/production/manifests/pgsql.pizza.local.pp  con il seguente output:

Eseguire il Puppet agent su pgsql.pizza.local con il comando:

Aggiungere il file /etc/puppetlabs/code/environments/production/manifests/puppetdb01.pizza.local.pp con il seguente output:

ATTENZIONE: modificare le java args in base alla memoria da allocare per PuppetDB.

Ref: Puppet Site

Eseguire il Puppet agent su puppetdb01.pizza.local con il comando:

Aggiungere il file /etc/puppetlabs/code/environments/production/manifests/01.puppet.pizza.local.pp con il seguente output:

Eseguire il Puppet agent su 01.puppet.pizza.it con il comando:

A questo punto Puppet, Puppet CA e PuppetDB sono pronti e sarà possibile installare l’agent su nuovi nodi, tuttavia è tipico utilizzare Puppet insieme ad una ENC come Foreman.

Scritto da Marco Valle

Mi chiamo Marco Valle e da sempre sono appassionato di Cybersicurezza e Linux.
Per lavoro implemento soluzioni open source.

Articoli Recenti

Veeam Backup

Monitoring

Friends

  • My English Lab  English School
  • ChrSystem   Infrastrutture IT
  • ACT For Cange  Mental Coach
  • Since 01  Kreative Graphics

Database

Networking

Autori

  • Raffaele Chiatto  Amministratore
  • Marco Valle  Autore Collaboratore

Related Post

0 Comments

Submit a Comment

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Virtualizzazione

Linux

Microsoft

Apple

Backup

Database

Security

Automazione