ipmideck, e il container
Docker, che esegue il web server direttamente. Si comportano in modo diverso, il comando sull’host
ti offre una console operatore interattiva, mentre il container si limita a riversare log
in chiaro. Questa pagina copre entrambi.
Install sull’host: ipmideck start
Su un install sull’host (pip), il server si avvia con il comando ipmideck. Il comando
principale è start:
ipmideck nudo, senza sottocomando, serve in modo identico a ipmideck start:
0.0.0.0:3000, quindi apri http://<your-ip>:3000 in un
browser una volta che è attivo.
ipmilink è un alias retrocompatibile dello stesso comando, ipmilink start
si comporta esattamente come ipmideck start. Usa ipmideck per tutto il nuovo.ipmideck start apre una console operatore interattiva. Quando
lo stesso comando gira senza un terminale, per esempio piped su un file o sotto un
supervisore di processi, salta la console e serve con log in chiaro invece. Vedi
la modalità headless / non-TTY qui sotto.
Docker: il container esegue il server direttamente
Il container Docker non esegue il comandoipmideck. La sua immagine avvia il web
server (uvicorn) direttamente:
ipmideck, nessuno dei sottocomandi, dei flag o
della console interattiva si applica dentro Docker, il container si limita sempre a riversare log
in chiaro su stdout, esattamente come la modalità headless sull’host. Il container si lega a
0.0.0.0:3000 ed è richiesto --network host affinché possa raggiungere i tuoi BMC sulla porta UDP
623. Vedi Installazione per i dettagli sulla rete.
Configura il container con variabili d’ambiente con prefisso
IPMIDECK_ e un volume su
/data invece dei flag CLI, vedi Configurazione. L’immagine pubblicata
arriva presto; il comando qui sopra è esattamente quello che eseguirai una volta che sarà disponibile.La directory dati
ipmideck scriveconfig.yaml, il database SQLite e la chiave di cifratura delle credenziali in
una singola directory dati. Dove vive dipende dalla piattaforma:
- Linux / Docker:
/data - Windows:
./data(relativo alla directory da cui eseguiipmideck)
IPMIDECK_DATA_DIR:
IPMIDECK_DATA_DIR=/data, quindi rendi persistente quel percorso con un
volume per conservare configurazione e storico tra un riavvio del container e l’altro.
Override tramite variabili d’ambiente
Ogni variabile d’ambiente con prefissoIPMIDECK_ che sovrascrive un’impostazione di config.yaml
funziona allo stesso modo sia sull’host sia in Docker, vedi
Configurazione per l’elenco completo. Le due che cambiano come ipmideck
si lega sono:
| Variabile d’ambiente | Effetto |
|---|---|
IPMIDECK_SERVER_HOST | Host di bind (predefinito 0.0.0.0). |
IPMIDECK_SERVER_PORT | Porta di bind (predefinita 3000). |
Le variabili d’ambiente hanno la precedenza su
config.yaml. Su un install sull’host, un esplicito
flag di bind da riga di comando vince sia sulla variabile d’ambiente sia sul file.Porta già in uso
Se qualcosa è già in ascolto sulla porta di bind, ipmideck rifiuta di avviarsi invece di contendersi la porta con un’altra istanza. Stampa questo su stderr ed esce con stato1:
IPMIDECK_SERVER_PORT
(o server.port in config.yaml), e riavvia.
Indirizzo non disponibile
Un guasto diverso è quando l’host che hai chiesto di legare non può essere usato, per esempio un indirizzo che non esiste su questa macchina, un’interfaccia solo IPv6, o una porta privilegiata che non hai il permesso di legare. ipmideck lo segnala separatamente ed esce anch’esso con stato1:
IPMIDECK_SERVER_HOST (o server.host), deve essere un indirizzo che
esiste davvero sulla macchina, e assicurati che la porta sia una che ti è permesso legare.
Arresto pulito con Ctrl+C
Premi Ctrl+C (che inviaSIGINT; SIGTERM è gestito allo stesso modo) per fermare
ipmideck. L’arresto è pulito: il web server esce dal suo loop, lo shutdown del lifespan
dell’applicazione viene eseguito, il controllo delle ventole viene restituito ai tuoi BMC, e il processo
esce in modo pulito senza traceback.
In Docker, il container si ferma su SIGTERM (quello che invia docker stop), quindi lo stesso
arresto pulito viene eseguito quando fermi il container.
Riavvio
Come funziona un riavvio dipende dal tuo sistema operativo:- Linux (e altri sistemi POSIX): ipmideck si riavvia sul posto: rilancia un
processo fresco che rilegge
config.yaml, mantenendo lo stesso terminale di controllo. - Windows: non c’è re-exec sul posto. ipmideck si arresta in modo pulito e stampa un suggerimento che ti chiede di eseguire di nuovo il comando da solo:
ipmideck start nella stessa shell, il processo fresco rilegge
config.yaml e raccoglie le nuove impostazioni.
Modalità headless / non-TTY
Quando ipmideck gira senza un terminale collegato, piped su un file, ridiretto, o sotto un gestore di processi, rileva che non c’è una TTY e salta la console interattiva. Serve la dashboard normalmente e riversa log in chiaro su stdout invece. Questo è lo stesso output che ottieni dal container Docker, che gira sempre senza una console. Questa modalità non richiede nulla di speciale: avvia semplicemente ipmideck nel modo in cui il tuo supervisore o pipeline lo invoca, e leggi i log da stdout.Prossimi passi
- Installazione: Docker e pip in dettaglio.
- Configurazione:
config.yaml, override tramite variabili d’ambiente e dove vivono i dati. - Risoluzione dei problemi: errori di connessione e IPMI.