Nel mondo IT di oggi, dove il deploy di nuove infrastrutture deve essere sempre più veloce, siamo ormai abituati alla flessibilità istantanea delle macchine virtuali.
Tuttavia, per specifiche esigenze di performance, sicurezza dei dati o controllo dei costi a lungo termine, a volte è ancora indispensabile appoggiarsi a server fisici (bare-metal) nei propri data center. Il limite storico di questo approccio è che la preparazione del "ferro" richiede tradizionalmente molto tempo, dovendo affrontare procedure manuali per l'installazione del sistema operativo, la gestione dello storage e la configurazione delle reti.
MAAS risolve brillantemente questo problema trasformando l'hardware fisico in un'infrastruttura fluida e on-demand.
In parole povere, funziona come un pannello di controllo intelligente per il tuo data center: quando colleghi fisicamente un nuovo server alla rete e lo accendi, MAAS lo scopre in automatico, ne collauda i componenti interni e lo mette "in panchina" nel tuo inventario, pronto per essere utilizzato.
In questo articolo vedremo insieme come installare MAAS e come effettuare il deploy di un server fisico, passo dopo passo.
Prerequisiti Hardware
Risorse mimine per un installazione standalone:
1 macchina fisica/virtuale con:
- 4 CPU
- 8 GB RAM
- 20 GB di storage liberi
- 1 NIC
- Sistema operativo linux (consigliato Ubuntu)
- Collegamento ad internet richiesto
Conoscenza minima di:
- Linux bash
- Networking L2
Cosa utilizzerò per questa guida?
Per questa guida utilizzerò una macchina virtuale per installare MAAS e una macchina fisica che userò come esempio per effettuare il deploy con le seguenti caratteristiche:
1 macchina virtuale MAAS su VMware:
- 8 CPU
- 16 GB RAM
- 50 GB di storage SSD
- 2 NIC (1 per la rete di management e 1 per rete delle IPMI)
- Sistema operativo Ubuntu 24.04 LTS
- Nome macchina: "overflowjournal-maas"
In questo tutorial verrà effettua l'installazione dell'applicativo MAAS standalone, quindi senza una configurazione in alta affidabilità e non adatta a sistemi di produzione.
In seguito pubblicherò delle ulteriori guide per delle installazioni più complesse adatte ad un infrastruttura di produzione.
Pronti ad iniziare?
Fase 1 - Installazione di MAAS
Come prima cosa è buona norma assicurarsi che la propria macchina sia aggiornata.
Eseguire quindi i seguenti comandi:
sudo apt update
sudo apt dist-upgrade -y
sudo rebootIl reboot è importante perché ci permette di riavviare la macchina e caricare il kernel più aggiornato.
MAAS può essere installato tramite snap oppure tramite il gestore di pacchetti APT.
Di seguito vi mostrerò entrambi i metodi.
SNAP
sudo snap install --channel=<version>/stable maas
APT
sudo apt-add-repository ppa:maas/<version>
sudo apt update
sudo apt -y install maas
Bisogna sostituire il campo "version" con la versione che si desidera installare.
L’elenco delle versioni disponibili è consultabile alla seguente pagina:

In questa guida verrà installata la versione 3.7
Durante l’installazione, sia scegliendo snap sia APT, verrà installato anche il database PostgreSQL.
MAAS utilizza questo database come base dati per gestire tutte le informazioni (macchine, reti, subnet, VLAN, utenti, ecc.).

In un ambiente di produzione è consigliabile configurare il database in alta affidabilità, tuttavia trattandosi di un’installazione standalone, questa configurazione è sufficiente.
Per finire il nostro setup andiamo a creare il primo utente di amministratore tramite il seguente comando:
sudo maas createadmin --username=$PROFILE --email=$EMAIL_ADDRESS

Il setup del vostro primo MAAS è ora concluso!
La dashboard è raggiungibile dall'indirizzo IP del vostro server sulla porta 5240

Fase 2 - Configurazione iniziale
Effettuiamo, come prima cosa, l'accesso a MAAS tramite l'interfaccia Web (Web UI).
Al primo accesso verrà richiesto di configurare alcuni parametri, tra cui il nome della Region e i DNS che MAAS assegnerà alle macchine gestite.

Nel mio caso ho scelto come nome della Region “overflowjournal” e ho impostato i DNS di Google.
Nella schermata successiva verrà richiesto di selezionare le immagini del sistema operativo da importare.
In questa fase è possibile scegliere tra quelle disponibili, importare una nuova immagine oppure saltare la configurazione.
Le immagini possono comunque essere aggiunte succesivamente in qualsiasi momento.

Nel mio caso mi basta l'immagine esistente (Ubuntu 24.04 LTS), quindi mi limito a proseguire e ultimare il setup iniziale.

MAAS utilizza cloud-init per eseguire la configurazione iniziale dei server, è quindi necessario importare una chiave pubblica SSH, che verrà iniettata durante l’installazione del sistema operativo.
Nel mio caso ho importato la mia chiave pubblica SSH personale:

Prima di procedere con la configurazione del primo ambiente su MAAS, è utile comprendere il funzionamento logico del sistema e le sue componenti principali.
MAAS è formato da 3 componenti principali:
- Database PostgreSQL
- Region Controller
- Rack Controller
I Region controller fungono da controller centrale stateless e scalabile orizzontalmente, gestendo le API e le interazioni con l'utente.
Detiene le informazioni di tutti i server gestiti e i relativi ambienti.
Utilizza il database PostgreSQL per gestire e salvare tutte le informazioni.
Inoltre gestisce tutti i Rack controller.
I Rack controller operano localmente sui rack per fornire servizi di rete (DHCP, IPMI, TFTP), comunicando con i region controller e sono i componenti che si occupano di effettuare il deploy e la gestione dei server.
Normalmente i rack controller vengono posizionati nel contesto delle infrastrutture che devono gestire.
Questa scelta garantisce anche la sicurezza, altrimenti i region controller dovrebbero avere visibilità su tutte le reti e infrastrutture gestite, creando un punto centrale di gestione ed un potenziale rischio.
Isolando invece un rack controller all'interno di un'infrastruttura specifica, si limita il suo campo d'azione e il dominio di gestione dei server.
Normalmente un rack controller è una macchina virtuale o server fisico separato installato direttamente del rack che deve gestire.

Nel nostro caso, trattandosi di un'installazione standalone, il server assumerà entrambi i ruoli: region controller e rack controller.
Questo è visibile nella sezione "Controllers" dell'interfaccia web.

Fase 3 - Preparazione del primo ambiente
Ora che abbiamo capito come è strutturato MAAS, possiamo procedere con la configurazione del primo ambiente.
Prima di tutto creiamo un Pool

I pool sono utili per organizzare in modo logico le macchine da gestire e dividerle nel caso si debbano gestire più ambienti.
Inoltre posso tornare utili per essere utilizzati come filtro nella barra di ricerca.
Ho chiamato il mio pool overflowjournal
Per salvare il pool cliccare sul bottone "Save pool"

MAAS può fungere anche da server DNS.
Di default mette a disposizione la zona .maas
Tuttavia, se si dispone di un domino personalizzato è possibile aggiungerlo.
MAAS lo utilizzerà per impostare l'FQDN delle macchine durante il setup.
Nel mio caso ho aggiunto il dominio overflowjournal.it
Per aggiungere un dominio, cliccare il pulsante "Add domains" in alto a destra.

Durante la configurazione di un nuovo dominio è possibile scegliere se renderlo autoritativo (gestito direttamente da MAAS) oppure no.
NETWORK
Per effettuare il deploy di un server, MAAS deve poterlo raggiungere.
Per fare questo è necessario che il rack controller abbia visibilità in layer2 della rete di management del server, e nel caso del server fisico, anche della visibilità della rete IPMI
Nel mio caso, la mia VM standalone che ospita sia il region controller che il rack controller ha le seguenti interfacce di rete:

- La rete 10.100.129.0/24 è la rete di management
- La rete 10.100.130.0/24 è la rete delle IPMI
Quando MAAS viene installato, effettua un discovery automatico delle reti e le configura automaticamente nella sezione "Subnets"

I nomi fabric-0 e fabric-1 sono dei nomi di default configurati da MAAS.
Questi nomi non vanno bene, sono troppo generici e non sono esplicativi.
A breve li rinomineremo, ma prima è necessario spiegare gli oggetti logici di rete di MAAS.
- Fabric: rappresenta un raggruppamento logico di reti appartenenti alla stessa infrastruttura. Ad esempio, una Farbic si potrebbe chiamare "Openstack" e una "VMware". Una Fabric può contenere più Subnet/VLAN
- Space: Raggruppa le subnet in modo logico, utile per definire una funzione.
Ad esempio, uno Space può chiamarsi "management", "backend" o "ipmi" - Subnet: È una rete IP.
Ogni subnet è sempre associata a una VLAN specifica. - VLAN: Identifica una rete virtuale a livello Layer 2 (VID, es. VLAN 10).
Ogni VLAN appartiene sempre a un Fabric.
Non vi preoccupate se al momento vi sembra complesso, preso sarà tutto più chiaro una volta completata la configurazione.
Come prima cosa andiamo a rinominare la fabric-0 e la chiamiamo overflowjournal-management

Facciamo la stessa cosa per la fabric-1 e la chiamiamo overflowjournal-ipmi

Successivamente aggiungiamo 2 Space

Uno lo chiamiamo "management" e l'altro "ipmi"

Ora selezioniamo la subnet 10.100.129.0/24 (rete di management)

E andiamo a rinominarla in overflowjournal-management

Facciamo la stessa cosa per la subnet 10.100.130.0/24, e la rinominiamo in overflowjournal-ipmi

Ok, ci sitiamo avvicinando già ad una situazione più organizzata.
Rimane solo da configurare le VLAN.
Selezioniamo la prima VLAN untagged, della fabric overflowjournal-management, sempre dalla sezione "Subnets"

Cambiamo nome alla VLAN, rinominandola in "management" e selezioniamo lo space corretto (management)

Inoltre, per questa VLAN sarà necessario configurare il DHCP, un servizio essenziale per consentire il boot PXE.
Affinché MAAS possa effettuare il deploy su un server pulito e non ancora inizializzato, quest'ultimo deve prima ottenere un indirizzo IP.
Il DHCP assolve a questo compito assegnando un IP temporaneo alla macchina, permettendole di comunicare in rete fino al completamento della sua configurazione definitiva.
Per configurare il DHCP selezionare il pulsante in basso "Configure DHCP"

Durante la configurazione verranno richieste alcune informazioni, tra cui il nome del Rack Controller incaricato di fornire il servizio DHCP.
Come accennato in precedenza, il Rack Controller è il componente che si occupa operativamente della gestione dell'infrastruttura.
Poiché il Region Controller di MAAS ha la visibilità globale di tutti i rack e delle subnet, spetterà a noi associare il corretto Rack Controller alla subnet appropriata. Infine, sarà necessario definire il range DHCP da riservare per gli indirizzamenti temporanei menzionati in precedenza.

Il risultato dovrebbe essere il seguente:

Ora selezioniamo la VLAN untagged, della fabric overflowjournal-ipmi, sempre dalla sezione "Subnets"

Cambiamo nome alla VLAN, rinominandola in "ipmi" e selezioniamo lo space corretto (IPMI)

Una volta completato quest'ultimo passaggio, avremo terminato la configurazione di rete del nostro primo ambiente.
Fase 4 - Preparazione server fisico
Per questa dimostrazione utilizzerò un server fisico Dell PowerEdge R640. Sebbene i passaggi specifici di questa fase varino in base alla marca e al modello dell'hardware, l'obiettivo finale rimane invariato: predisporre lo storage (inclusi eventuali volumi RAID) e abilitare la scheda di rete per il boot PXE.
Come prima cosa, accedere alla schermata del BIOS.
Nel caso di questo server Dell, è sufficiente premere F2 durante l'avvio.

Come primo passo, è buona norma assicurarsi che il boot sia impostato in modalità UEFI. Pur non essendo strettamente obbligatorio, è ormai un requisito fondamentale per le versioni più recenti dei sistemi operativi:

Assicurarsi di avere lo storage del server correttamente configurato.
Nel mio caso ho 2 volumi RAID:

Ed infine abilitare il boot PXE sull'interfaccia di rete di management:

Una volta terminata la configurazione, riavviare il server e, durante la fase di accensione, selezionare l'opzione per il boot via PXE.
Sul server utilizzato per questa dimostrazione, il menu di avvio tramite PXE è accessibile premendo il tasto F12.

Se tutto è stato configurato correttamente, l'interfaccia di rete otterrà un indirizzo IP dal DHCP e avvierà con successo la procedura di boot PXE.

Al termine della procedura di boot via PXE, il server si spegnerà automaticamente e verrà registrato su MAAS, risultando visibile all'interno della sezione "Machines".

A questo punto siamo pronti per procedere con la configurazione del nostro server fisico. Come prima operazione, selezioniamo la macchina dall'elenco per modificarne il nome e le impostazioni DNS.

Successivamente, spostiamoci nella scheda "Configuration" per assegnare il server al pool creato in precedenza.

Procediamo ora con la fase di Commissioning.

In MAAS il commissioning è un passaggio diagnostico ed esplorativo fondamentale. Durante questa procedura, il sistema elabora un profilo completo dell'hardware del server (identificando CPU, memoria, dischi, interfacce di rete e impostazioni del BIOS) ed esegue una serie di test per verificarne il corretto funzionamento. Se questa fase si conclude senza errori, la macchina viene impostata nello stato "Ready"

A questo punto possiamo passare alla configurazione della rete e dello storage.
Per iniziare a definire i parametri di rete, selezioniamo l'apposita scheda "Network".

In questa sezione vengono mostrate tutte le interfacce di rete disponibili sul server. Quelle contrassegnate dal logo rosso indicano un collegamento assente, mentre per le interfacce correttamente connesse viene riportata la relativa velocità di collegamento.
Nel mio caso sono presenti due interfacce da 10 Gbps attive, denominate eno1np0 e eno2np1.
Da questa schermata è possibile creare bond, bridge, VLAN e, più in generale, definire tutte le configurazioni di rete supportate dal sistema operativo.
In questo esempio manterrò una configurazione semplice, limitandomi a impostare l'interfaccia eno1np0 con un indirizzo IP statico.

Il risultato dovrebbe essere simile a questo:

Lasciamo la seconda scheda in "Uncofigured" e ci spostiamo ora verso la parte di Storage.

Come anticipato, il server dispone di due volumi RAID già configurati, che in questa sezione appariranno come due dischi separati.
Da qui è possibile definire la struttura del file system: la configurazione del primo disco può essere lasciata così com'è, con due partizioni destinate rispettivamente a /boot/efi e alla root (/).
Il secondo disco, invece, verrà formattato in XFS e montato sul percorso /mnt/disk1.


Fase 5 - Deploy sistema operativo
Perfetto, siamo giunti alla fase finale: l'installazione del sistema operativo.
Avendo completato tutte le configurazioni necessarie, non ci resta che avviare il processo cliccando sul pulsante "Deploy".

Selezioniamo, infine, il sistema operativo che desideriamo installare.
Per questa guida utilizzerò l'immagine "Ubuntu 24.04 LTS".

Al termine del processo, il server assumerà lo stato "Deployed".

A questo punto possiamo verificare il risultato finale.
Se tutte le configurazioni sono state eseguite correttamente, saremo in grado di accedere alla macchina tramite connessione SSH.

Come possiamo verificare, tutte le configurazioni definite tramite il pannello di controllo di MAAS sono state applicate correttamente al sistema operativo.
Conclusioni
In questa guida abbiamo visto come utilizzare MAAS per effettuare il provisioning completo di un server fisico, partendo dalla preparazione del server MAAS fino al deploy del sistema operativo e alla verifica finale della configurazione.
Anche se l'esempio mostrato riguarda un solo server, il vero valore di MAAS emerge in contesti più ampi, dove le stesse operazioni possono essere eseguite in parallelo su più macchine, consentendo di distribuire in modo rapido, coerente e centralizzato anche decine di server fisici contemporaneamente.
Questo approccio permette di ridurre i tempi operativi, minimizzare gli errori manuali e standardizzare l'intero processo di installazione e configurazione dell'infrastruttura.
Proprio per questo, MAAS rappresenta uno strumento particolarmente efficace per ambienti che richiedono scalabilità, automazione e controllo senza rinunciare alla potenza dei server fisici.
Vi ringrazio per aver letto fino in fondo questa guida!
Per qualunque domanda potete scrivermi a [email protected]
