Installare Chef su Ubuntu 17.04

Introduzione
Chef è uno strumento open source per la gestione della configurazione scritto principalmente in Ruby ed Erlang. Permette di automatizzare la creazione e la gestione di server, integrandosi con piattaforme cloud come AWS, OpenStack o Rackspace. In ambienti con molti nodi, Chef centralizza la gestione attraverso tre componenti principali: Chef Server, Chef Workstation e Chef Nodes.
Questo tutorial descrive i passaggi per installare il Chef Server su una macchina Ubuntu 17.04 (Zesty Zapus). Nota importante: Ubuntu 17.04 è una release non-LTS e potrebbe essere fuori supporto; per ambienti di produzione è consigliabile usare una LTS supportata (ad es. Ubuntu 18.04, 20.04 o 22.04) e verificare la compatibilità dei pacchetti Chef più recenti.
Prerequisiti
- Un server con Ubuntu 17.04 minimale.
- Privilegi di root (la guida usa comandi come root; se sei un utente sudo esegui sudo -i).
- Un nome di dominio configurato puntato verso il server (FQDN) o l’indirizzo IP pubblico.
- Accesso alla rete per scaricare pacchetti e dipendenze.
Importante: verifica lo spazio disco disponibile e che le porte necessarie (HTTP/HTTPS, servizi interni di Chef) non siano bloccate da firewall esterni.
Aggiornare il sistema base
Prima di installare pacchetti, aggiorna repository e pacchetti:
apt update && apt -y upgrade
Dopo l’aggiornamento procedi con i passaggi successivi.
Impostare l’hostname risolvibile
Chef richiede un hostname risolvibile (FQDN). Esempio: chef.tuodominio.com. Per impostarlo:
hostname 'chef.tuodominio.com'
Aggiorna anche /etc/hostname:
echo "chef.tuodominio.com" | tee /etc/hostname
Aggiungi la riga corrispondente in /etc/hosts (sostituisci con il tuo IP pubblico):
echo "192.168.1.1 chef.tuodominio.com" >> /etc/hosts
Suggerimento rapido: verifica la risoluzione con ping e hostname -f.
Configurare NTP (sincronizzazione orologio)
Chef è sensibile alle variazioni dell’orologio; assicurati che il server abbia NTP configurato e attivo. Installazione e abilitazione:
apt install ntp
systemctl start ntp
systemctl enable ntp
Controlla lo stato della sincronizzazione:
ntpq -p
Output di esempio (il contenuto varia a seconda dei peer):
root@chef:~# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
0.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
... (output omesso per brevità) ...
Nota: se il server è in una rete con firewall che blocca UDP/123, aprire la porta verso i server NTP.
Scaricare e installare Chef Server
Scarica il pacchetto .deb (esempio per una versione specifica e Ubuntu 16.04 nel link di esempio):
wget https://packages.chef.io/files/stable/chef-server/12.15.8/ubuntu/16.04/chef-server-core_12.15.8-1_amd64.deb
Avvertenza: consulta la pagina ufficiale dei download di Chef per ottenere il link aggiornato per la tua distribuzione.
Installa il pacchetto:
dpkg -i chef-server-*.deb
Configurare Chef Server
Dopo l’installazione, configura e avvia tutti i servizi necessari con:
chef-server-ctl reconfigure
Il comando impiegherà alcuni minuti: installa componenti interni e applica le configurazioni. Alla fine dovresti vedere un messaggio di completamento simile a:
Chef Client finished, 491/1096 resources updated in 03 minutes 13 seconds
Chef Server Reconfigured!
Verifica lo stato dei servizi:
chef-server-ctl status
Esempio di output che mostra i servizi avviati:
root@chef:~# chef-server-ctl status
run: bookshelf: (pid 6030) 87s; run: log: (pid 6047) 86s
run: nginx: (pid 5859) 91s; run: log: (pid 6387) 82s
... (output omesso) ...
Installare la console web di gestione
Per una GUI amministrativa installa Chef Manage:
chef-server-ctl install chef-manage
chef-server-ctl reconfigure
chef-manage-ctl reconfigure
Durante la configurazione ti verrà chiesto di accettare la licenza. Per accettarla automaticamente:
chef-manage-ctl reconfigure --accept-license
Creare amministratore e organizzazione
Crea una directory per conservare le chiavi RSA:
mkdir ~/.chef
Crea l’utente amministratore (sostituisci i campi con i tuoi valori):
chef-server-ctl user-create admin Chef Administrator [email protected] StrongPassword -f ~/.chef/admin.pem
Crea un’organizzazione (sostituisci i nomi):
chef-server-ctl org-create my_org 'My Organization' --association_user admin -f ~/.chef/my_org.pem
Le chiavi *.pem generate sono necessarie per connettere workstation e client al server.
Accedere alla console web
Apri il browser e visita l’indirizzo del server (IP o dominio):
http://Your-Server-IP
Dovresti visualizzare la schermata di login nel browser.
Effettua il login con l’utente creato; dopo l’accesso vedrai la dashboard di gestione.
Plugin opzionali: Reporting e Push Jobs
Per abilitare il reporting:
chef-server-ctl install opscode-reporting
chef-server-ctl reconfigure
opscode-reporting-ctl reconfigure
opscode-reporting-ctl test
Per abilitare Push Jobs (esecuzioni remote di job sui nodi):
chef-server-ctl install opscode-push-jobs-server
chef-server-ctl reconfigure
opscode-push-jobs-server-ctl reconfigure
Sicurezza e hardening consigliati
- Firewall: apri solo le porte necessarie (HTTP/HTTPS, porte interne usate da Chef). Usa ufw o iptables per limitare l’accesso.
- HTTPS: proteggi la console web con TLS; considera l’installazione di un certificato valido (Let’s Encrypt o certificati aziendali).
- Backup: esegui backup regolari delle chiavi e del database PostgreSQL.
- Least privilege: usa account separati per amministrazione e automazione; limita l’accesso alle chiavi private.
- Aggiornamenti: mantieni pacchetti e dipendenze aggiornate; controlla le note di sicurezza di Chef.
Nota: la generazione delle chiavi private (.pem) deve essere trattata come materiale sensibile.
Controlli post-installazione (Criteri di accettazione)
Per considerare l’installazione completata con successo verifica:
- Il comando chef-server-ctl status mostra tutti i servizi in esecuzione.
- È possibile accedere alla console web con l’account amministratore.
- I file ~/.chef/admin.pem e ~/.chef/my_org.pem esistono e sono leggibili solo dal proprietario.
- NTP mostra peer sincronizzati con stato valido.
- I backup delle chiavi e della configurazione sono pianificati.
Runbook di risoluzione problemi rapido
- Problema: servizi non avviati → Esegui chef-server-ctl reconfigure e controlla /var/log/chef-server/*.log
- Problema: errori di certificato HTTPS → verifica i certificati in /var/opt/opscode/nginx/ca/ e i permessi
- Problema: login fallito → verifica associazione utente-organizzazione e chiavi .pem
- Problema: reporting o plugin non funzionano → riesegui reconfigure dei moduli opscode-*
Esempi di comandi diagnostici utili:
chef-server-ctl tail
chef-server-ctl test
systemctl status ntp
ntpq -p
Quando Chef potrebbe non essere la soluzione ideale
- Piccoli ambienti con poche macchine: strumenti agentless come Ansible possono essere più semplici.
- Se hai bisogno di configurazioni estremamente leggere e senza server centrale, considera chef-solo o alternative.
- Requisiti di compliance che impongono piattaforme gestite: potresti preferire soluzioni hosted che includono aggiornamenti e supporto.
Approcci alternativi e confronto rapido
- Ansible: agentless, semplice da apprendere, ideale per provisioning e configurazioni senza server centrale.
- Puppet: simile a Chef, con modello dichiarativo e una larga adozione enterprise.
- SaltStack: focalizzato su velocità e gestione in tempo reale.
Scegli in base a: dimensione dell’infrastruttura, cultura del team (Ruby vs YAML), necessità di un server centrale e requisiti di automazione.
Modello mentale: come funziona Chef (in una riga)
Chef Server è il catalogo centrale; Workstation prepara cookbook e policy; Node esegue chef-client per applicare lo stato desiderato.
Checklist ruolo-based (operatore, sviluppatore, sicurezza)
- Operatore:
- Verificare servizi e backup.
- Monitorare NTP e spazio disco.
- Sviluppatore/DevOps:
- Testare cookbooks in ambiente di staging.
- Automatizzare pipeline CI/CD per cookbooks.
- Sicurezza:
- Controllare permessi delle chiavi .pem.
- Verificare TLS e rotazione delle chiavi.
Mini-metodologia di rollout (passi consigliati)
- Preparare server di test con FQDN e NTP.
- Installare Chef Server in ambiente di staging.
- Creare utente e org, testare login e deploy di un cookbook minimo.
- Abilitare backup e monitoring.
- Ripetere in produzione con configurazioni di rete e DNS corrette.
Esempi di snippet utili
- Aggiunta rapida in /etc/hosts (esempio già fornito):
echo "192.168.1.1 chef.tuodominio.com" >> /etc/hosts
- Riavviare NTP se necessario:
systemctl restart ntp
Glossario (una riga ciascuno)
- Chef Server: componente centrale che conserva cookbooks, policy e dati dell’organizzazione.
- Workstation: macchina da cui si sviluppano cookbooks e si interagisce con il server.
- Chef Node: server gestito che esegue chef-client per applicare configurazioni.
- Cookbook: pacchetto di risorse e ricette per gestire software e servizi.
Note locali e compatibilità
- Se stai operando in Italia, verifica policy aziendali per la gestione delle chiavi e la localizzazione dei certificati.
- Controlla la compatibilità dei pacchetti Chef con la versione di Ubuntu in uso; alcune build potrebbero essere destinate a LTS diverse.
Riepilogo
In questa guida hai imparato a:
- Preparare un server Ubuntu 17.04 per Chef (hostname, NTP, aggiornamenti).
- Scaricare e installare Chef Server e la console web di gestione.
- Creare utente amministratore e organizzazione, abilitare plugin opzionali.
- Applicare controlli di sicurezza, checklist operative e procedure di risoluzione dei problemi.
Importante: per ambienti di produzione privilegia versioni LTS di Ubuntu e mantieni aggiornati sia il sistema operativo che i pacchetti Chef.
Note finali
Per approfondire visita la documentazione ufficiale di Chef e le pagine di download per scaricare le versioni più aggiornate dei pacchetti e consultare le note di rilascio.
Materiali simili

Scaricare immagini da Google Docs: 6 metodi pratici

Chrome non si apre su Windows: come risolvere
Icona Impostazioni scomparsa dal menu Start

Personalizzare le barre di scorrimento in Windows 10 e 11

Aggiornamenti sicurezza automatici su Ubuntu 16.04
