Configurazione di Foreman per l’amministrazione di base della ENC di Puppet e per la gestione di Organizations, Locations e Host groups

by | Dic 6, 2023

Negli articoli precedenti relativi a Puppet, è stato discusso come installare e configurare Puppet server, PuppetDB e Foreman.
La maggior parte delle configurazioni sono state effettuate per mezzo dei cataloghi di Puppet.
È possibile inserire le configurazioni dei nodi su Foreman, in modo da poterle gestire dalla web UI.
In questo articolo verrà discusso come inserire i parametri della ENC di Puppet su Foreman e come gestire efficacemente le Organizations, le Locations e gli Host Groups.

ARCHITETTURA

Per l’installazione di Puppet server, PuppetDB, PostgreSQL e Foreman sono stati utilizzati quattro container LXC con Debian 11.

PREREQUISITI

Si suppone che si abbia già installato e configurato Puppet server, PuppetDB, PostgreSQL e Foreman.

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

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

GESTIONE DELLE ORGANIZATIONS E DELLE LOCATIONS

Le Organizations su Foreman permettono la divisione delle risorse in gruppi logici, che possono essere organizzati in base alle proprie esigenze.
Ad esempio, è possibile organizzare i gruppi logici in base ai propri team, oppure in base alle proprie VLAN.
Tramite le organizzazioni è possibile la segregazione dei permessi ed il multi tenancy.
È possibile assegnare le risorse ad una o più organizzazioni.

Le Locations hanno una funzione simile alle Organizations, però vengono utlizzate per organizzare le risorse in base alla loro posizione fisica e/o geografica.
È possibile creare organizzazioni e locations innestate, in questo caso le risorse assegnate al parent vengono ereditate anche dai children.

Foreman, in fase di installazione, crea un’organizzazione e una location di default; se non viene specificato diversamente, esse vengono assegnate automaticamente ai nuovi host.
È possibile rinominare l’organizzazione e la location di default, tuttavia, soprattutto in caso di multi tenancy, si consiglia di creare delle organizzazioni e delle locations nuove, senza modificare quelle di default.

Per effettuare le seguenti operazioni, è necessario accedere a Foreman con un’utenza amministrativa.

In alto, accanto al logo di Foreman, è possibile selezionare il contesto.
Quando si necessità di fare delle modifiche amministrative, si consiglia di selezionare Any Organization e Any Location

CREAZIONE DELLA STRUTTURA DI ORGANIZZAZIONI

In questo esempio, sfrutteremo le organizations per effettuare una divisione degli host per VLAN.
Creeremo una struttura con tre organizzazioni: PIZZA, PIZZA/LAN e PIZZA/DMZ.

Andare su Administer > Organizations

Cliccare su New Organization

Inserire le informazioni relative alla nuova organizzazione e salvare

Nel menù a sinistra, selezionare Smart Proxies e cliccare su 01.puppet.pizza.it per spostarlo nella lista degli smart proxies selezionati

In alternativa, se all’organizzazione appartengono tutti gli smart proxies, è possibile spuntare All smart proxies

Nel menù a sinistra, selezionare Locations e aggiungere Default Location all’organizzazione

In caso di multitenancy, se non si aggiungesse la location di default all’organizzazione, è possibile che non vengano visualizzati gli host aggiunti da Puppet.
Analogamente a come è stato mostrato con le locations e gli smart proxies, è possibile assegnare le altre risorse all’organizzazione.

Salvare, cliccando su Submit

Ora andreamo a creare l’organizazione DMZ.

Sempre in Organizations, cliccare su New Organization ed inserire le informazioni relative alla nuova organizzazione.
Tramite la voce Parent, è possibile innestare le organizzazioni.

Nel menù a sinistra, selezionare Domains e aggiungere i domini di DMZ

Se necessario, è possibile assegnare le altre risorse all’organizazione.
Analogamente a come è stato mostrato per PIZZA/DMZ, è possibile aggiungere l’organizzazione PIZZA/LAN.

CREAZIONE DELLA STRUTTURA DI LOCATIONS

In questo esempio creremo un’unica location, ciononostante in modo simile a come è stato effettuato per le organizzazioni, è possibile creare locations innestate.

Andare su Administer > Locations

Cliccare su New Location

Inserire le informazioni della nuova location e cliccare su Submit per salvare

Assegnare le organizzazioni alla location

Analogamente a come è stato fatto per le organizzazioni, è possibile aggiungere le altre risorse alla location.

ASSEGNAZIONE DELLO SMART PROXY ALLE ORGANIZZAZIONI E ALLE LOCATIONS

Andare su Infrastracture > Smart Proxies

Selezionare lo smart proxy

Cliccare su Edit

Aggiungere le locations

Aggiungere le organizzazioni

Salvare cliccando su Submit

ASSEGNAZIONE DEGLI ENVIRONMENTS DI PUPPET ALLE ORGANIZZAZIONI E ALLE LOCATIONS

Andare su Configure > Environments

Selezionare production

Aggiungere le locations

Aggiungere le organizzazioni

Salvare cliccando su Submit

ASSEGNAZIONE DEI DOMINI E DELLE SUBNETS ALLE ORGANIZZAZIONI E ALLE LOCATIONS

Analogamente a come è stato mostrato per gli smart proxies e gli environments, è possibile assegnare i domini e le subnets alle organizzazioni e alle locations.
Foreman è in grado di assegnare autonomamente le risorse alle organizzazioni e alle locations per correggere i mismatch.

ASSEGNAZIONE DEGLI HOST ALLE ORGANIZZAZIONI E ALLE LOCATIONS

Andare su host > All host

Selezionare gli host, cliccare su Select Action ed assegnare l’organizzazione e la location

Tramite il flag Fix Location on Mismatch, è possibile far correeggre da Foreman le incorenze tra le risorse, le organizzazioni e le locations.
In alternativa è possibile lasciare selezionato il flag Fails on Mismatch, in questo caso se ci fossero delle incorenze Foreman mostrerà un errore.
Nella documentazione di Foreman viene consigliato di utilizzare il flag Fix Location on Mismatch, poiché potrebbe accadere che venga mostrato comunque un errore, nonostante non ci siano effettive incoerenze.

Assigning a Host to a Specific Location

GESTIONE DEGLI HOST GROUPS

Gli host groups vengono utilizzati per organizzare gli hosts in base alle configurazioni.
È possibile assegnare un solo host group per ogni nodo, tuttavia attraverso l’ereditarietà degli host groups è possibile condividere le configurazioni tra i nodi che appartengono a gruppi diversi.
Le configurazioni assegnate ad un host group vengono eridatate anche dai suoi sottogruppi, se non sono presenti delle configurazioni più specifiche.

CREAZIONE DI UNA STRUTTURA DI HOST GROUPS

Andare su Configure > Host Groups

Cliccare Create Host Group

Inserire le informazioni dell’host group e selezionare gli smart proxies per Puppet

Andare nella sezione Organizations e aggiungere l’organizzazione PIZZA

È possibile assegnare gli environments, locations, subnets e le altre risorse ai sottogruppi.

Sempre nella sezione Host Groups, cliccare su Create Host Group

Aggiungere l’host group con i nodi di produzione, selezionando l’environment corretto

Analogamente a come è sono stati creati i due host grops Pizza e Pizza/Prod, è possibile ricreare la struttura di host groups in figura

In questo esempio, assegneremo la location Datacenter Torino al gruppo Pizza/Prod/Servers

ATTENZIONE: La struttura di host groups proposta in questa guida è a scopo dimostrativo. Essa è stata fatta di proposito complessa, con diversi livelli di innestamento, allo scopo di mostrare l’ereditarietà delle configurazioni.
Si consiglia di ridurre i livelli di innestamento allo stretto necessario, onde evitare eccessivi problemi di mismatch tra le risorse.

ASSEGNAZIONE DEGLI HOST GROUPS AI NODI

Andare su host > All host

Selezionare gli host, cliccare su Select Action ed assegnare l’host group corretto

A questo punto i due componenti di Puppet, PostgreSQL e Foreman dovrebbero essere in quattro gruppi dedicati.

GESTIONE DELLA ENC DI PUPPET

Tramite la ENC di Foreman, è possibile distribuire i parametri delle classi di Puppet.
La distribuzione dei parametri può essere organizzata in base al dominio, l’OS, hostgroup e l’FQDN.
I parametri sono tipizzati, i tipi più utilizzati sono: le stringhe, i valori booleani, gli array e gli hash.

Esempio di array: [“item01″,”item02″,”item03”]

Esempio di hash: key01: “Example 01” key02: [“Example 02”] key03: false

MODIFICARE I PARAMETRI DELLE CLASSI DI PUPPET TRAMITE FOREMAN

A scopo dimostrativo, importeremo su Foreman alcuni parametri utilizzati nelle configurazioni discusse nelle precedenti guide riguardo a Puppet.
[sottolineato-begin]Perché funzioni tutto correttamente, è necessario importare tutti i parametri inseriti nei cataloghi presenti sul Puppet master in /etc/puppetlabs/code/environments/production/manifests.
È possible assegnare alcuni parametri tramite host groups, ma altri, come per esempio i nomi dei certificati, è necessario assegnarli tramite FQDN.

Andare su Configure > Smart Class Parameters

Cercare e selezione il nome della classe da importare, in questo caso puppetdb::server

Selezionare il parametro ed abilitare l’override

A questo punto, in fondo alla pagina, sarà possibile inserire i valori del parametro.
In questo caso assegnermo il valore del parametro a tutti gli host che appartengono all’host group Pizza/Prod/Server/Linux/LAN/PuppetDB o ai suoi sotto gruppi

Per modificare il valore distribuito di default per un determinato parametro, è necessario modificarlo nella tab Default Behavior.

In questo caso il parametro è di tipo booleano, perciò è anche necessario selezionare il tipo corretto nella box Parameter Type.

Nel prossimo esempio modificheremo un parametro di tipo hash.
Come valore di default impostare che venga distribuito un hash vuoto, invece per gli host appartenenti all’host group Pizza/Prod/Server/Linux/LAN/PuppetDB (e i suoi sottogruppi), impostare che venga distribuito un hash con due elementi.

ASSEGNAZIONE DELLE CLASSI DI PUPPET TRAMITE FOREMAN

Andare su Configure > Host Groups

Selezionare l’hostgroup a cui si vuole assegnare la classe di Puppet.

ATTENZIONE: Quando si assegna una classe ad un hostgroup, la classe viene assegnata anche ai suoi sotto gruppi.

Andare nella tab Puppet ENC e premere il + accanto ai nomi dei moduli per espandere la voce e visualizzare le classi.
Selezionare le classi da assegnare all’hostgroup scelto e cliccare su Submit per salvare

ATTENZIONE: Se si importa la classe, però i parametri non sono configurati correttamente, si rischia di fare dei danni sugli host impattati.
Si consiglia di fare particolare attenzione quando si configurano le classi di Foreman e Puppet DB, perché una configurazione errata potrebbe causare la compromissione dell’accesso alla web UI o addirittura dell’utilizzo di Puppet server.

Quando si assegna una classe su Foreman, assicurarsi che essa non sia già stata assegnata al nodo tramite un catalogo sul Puppet master.
Per verificare che le configurazioni siano corrette, è possibile eseguire su richiesta il Puppet agent sui nodi il seguente comando:

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