Installazione e configurazione di Foreman e dello smart proxy per la gestione di Puppet su containers LXC con Debian 11

da | Nov 23, 2023

Foreman è un software open source per la gestione delle macchine client e server.
Tramite Foreman è possibile effettuare il provisoning su bare metal o sui principali virtualizzatori, oltre che effettuare il monitoraggio delle risorse fisiche e virtuali.
È possibile estendere le funzionalità di Foreman tramite plugins e smart proxies.
I plugins vengono installati sul server di Foreman; esiste ad esempio un plugin per connettere Foreman a PuppetDB.
Gli smart proxies sono macchine fisiche o virtuali in cui viene installato un apposito servizio che comunica con Foreman.
Foreman, tramite lo smart proxy, è in grado di gestire alcuni servizi della macchina in cui è installato.
Lo smart proxy è integrabile con i principali software di gestione delle macchine (come Puppet, Ansible e Salt) e con altri servizi come TFTP, realm AD…
Le connessioni tra Foreman e i suoi smart proxy sono bidirezionali, perciò è necessario abilitare i flussi sul firewall in entrambe le direzioni.

ARCHITETTURA

Per l’installazione di Foreman verrà utilizzato un container LXC con Debian 11.
Sul Puppet master verrà installato e configurato lo smart proxy per Puppet e Puppet CA.
Come database di Foreman verrà utilizzata la stessa istanza di PostgreSQL che è stata utilizzata per PuppetDB.
Si sconsiglia di esporre Foreman su internet, essendo esso un servizio con il quale è facilmente possibile ottenere l’accesso remoto alle macchine.

PORTE UTILIZZATE

foreman01.pizza.local

: TCP/443 HTTPS Foreman

01.puppet.pizza.it: TCP/8140 HTTPS Puppet server e TCP/8443 HTTPS Foreman smart proxy

puppetdb01.pizza.local: TCP/8140 HTTPS PuppetDB

pgsql.pizza.local: TCP/5432 PostgreSQL

FLUSSI DA ABILITARE

foreman01.pizza.local -> 01.puppet.pizza.it: TCP/8140, TCP/8443
foreman01.pizza.local -> puppetdb01.pizza.it: TCP/8140
foreman01.pizza.local -> pgsql.pizza.local: TCP/5432
01.puppet.pizza.it -> foreman01.pizza.local: TCP/443
01.puppet.pizza.it -> puppetdb01.pizza.local: TCP/8140
puppetdb01.pizza.local -> 01.puppet.pizza.it: TCP/8140
puppetdb01.pizza.local -> pgsql.pizza.local: TCP/5432
pgsql.pizza.local -> 01.puppet.pizza.it: TCP/8140

PREREQUISITI

Si suppone che si abbia già installato e configurato Puppet server e PuppetDB seguendo la guida seguente

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

Se si fosse installato Puppet e i relativi servizi senza consultare la guida, si consiglia di prenderne visione, per avere una maggiore comprensione dell’architettura.

INSTALLAZIONE

Sull’host foreman01.pizza.local aggiornare il sistema operativo con i seguenti comandi:

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

INSTALLAZIONE DI PUPPET AGENT

Aggiungere le repository di Puppet con i seguenti comandi:

Installare il pacchetto Puppet Agent con il comando:

Aggiungere nel file /etc/puppetlabs/puppet/puppet.conf il seguente output:

A questo punto sarà necessario firmare il certificato dell’agent sulla CA di Puppet con i seguenti comandi:

Successivamente, eseguire l’agent su foreman01.pizza.local con il comando:

INSTALLAZIONE DI FOREMAN

Aggiungere i repository di Foreman con i seguenti comandi:

Sull’host pgsql.pizza.local eseguire i comandi:

Sull’host 01.puppet.pizza.it eseguire il comando:

Creare il file /etc/puppetlabs/code/environments/production/manifests/foreman01.pizza.local.epp ed inserire il seguente output:

Sull’host foreman01.pizza.local eseguire i comandi:

A questo punto Foreman dovrebbe essere disponibile all’indirizzo: https://foreman.pizza.local

Accedere con le credenziali impostate tramite i parametri initial_admin_username e initial_admin_password.

Andare su Administer > Settings > General e configurare Foreman URL: https://foreman.pizza.local

INSTALLAZIONE DELLO SMART PROXY PER PUPPET

Sull’host 01.puppet.pizza.local eseguire i comandi:

Aggiungere le repository di Foreman con i seguenti comandi:

Aggiungere nel file /etc/puppetlabs/puppetserver/conf.d/auth.conf il seguente output:

ATTENZIONE: La rule relativa a /puppet/v3/environments, dovrebbe già essere presente, aggiungere le altre due sotto di essa

Aggiungere nel file /etc/puppetlabs/puppet/foreman.yaml il seguente output:

Aggiugere i file necessari a Puppet per ricevere da Foreman i parametri della ENC ed inviargli i reports con i seguenti comandi:

Aggiungere nel file /etc/puppetlabs/puppet/puppet.conf il seguente output:

Riavviare il server con il comando:

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

Sull’host puppet01.pizza.local eseguire il comando:

CONFIGURAZIONE DI FOREMAN TRAMITE WEB GUI

Sulla web UI di Foreman andare su

Selezionare dal menù Administer > Settings > PuppetDB

Quindi configurare le impostazioni mostrate nell’immagine sovrastante

Andare su Monitor > PuppetDB Nodes

Quindi importare gli Host mancanti selezionando Actions quindi Import

Andare su Hosts > All Hosts

Impostare gli environments dei nodi importati come mostrato nell’immagine sovrastante

Quindi modificare l’environment e cliccare su Submit

Andare su Configure > Enviroments

Quindi importare le classi di Puppet cliccando Import Environments from 01.puppet.pizza.local

A questo punto Foreman è pronto per essere utilizzato come Puppet ENC, ricevere i reports e consultare i facts.

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 commenti

Invia un commento

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

Virtualizzazione

Linux

Microsoft

Apple

Backup

Database

Security

Automazione