Pyinfra
Pyinfra
Pyinfra in GazziNet va letto su due livelli:
- come strumento generale di automazione scritto in Python
- come implementazione concreta gia pubblicata su
bot.gazzi.net/pyinfra/per creare VM Proxmox via browser
Questa pagina principale e pensata per una persona umana che vuole capire rapidamente:
- che cosa fa pyinfra
- quando usarlo
- dove trovare esempi semplici e avanzati
- dove trovare il runbook reale della web UI pubblicata
- dove trovare la spiegazione tecnica dell'implementazione del deploy automatico VM
I dettagli sensibili non vanno messi in wiki. Password, token, cookie, backend privati e dump runtime restano fuori dalla documentazione pubblica o semi-pubblica.
In una frase
Pyinfra e un motore di automazione che usa Python per descrivere inventory, logica e operazioni di deploy in modo piu programmabile rispetto ai playbook puramente YAML.
Quando ha senso usarlo
Pyinfra e adatto quando:
- vuoi tenere deploy e configurazioni in Git
- preferisci Python per logica, condizioni e riuso
- devi automatizzare server Linux, homelab o ambienti interni
- vuoi una separazione chiara tra form di input, validazione e runner di provisioning
Pyinfra e meno adatto quando:
- il team vuole solo file dichiarativi molto semplici
- nessuno vuole mantenere codice Python
- l'automazione deve essere totalmente guidata da un pannello visuale gia pronto
Concetti base
Tre idee utili da capire subito:
1. Inventory
L'inventory descrive i target: host, gruppi e dati associati.
2. Operations
Le operations descrivono cosa deve essere applicato ai target, oppure uno stato che vuoi rendere vero.
3. Esecuzione
Pyinfra legge inventory e dati, prepara l'ordine delle operazioni, si connette ai target ed esegue le modifiche.
Nel caso GazziNet
Su GazziNet pyinfra non e stato usato come esercizio teorico. E stato integrato in una soluzione completa:
- UI pubblica:
https://bot.gazzi.net/pyinfra/ - autenticazione: LDAP
- runner:
pyinfralocale subot.gazzi.local - target: Proxmox
- risultato: creazione controllata di VM con parametri espliciti
Percorso consigliato di lettura
Se parti da zero:
- Esempi Pyinfra
- Pyinfra/Deploy automatico VM Proxmox
- Pyinfra/Implementazione deploy VM linea per linea
Se vuoi solo usare la piattaforma pubblicata:
Se vuoi capire il codice:
Mappa delle pagine
Guida pratica con esempi base e avanzati di pyinfra.
Runbook umano della web UI pubblicata su bot.gazzi.net.
Spiegazione tecnica del codice che realizza il deploy automatico di VM.
Confronto generale di approccio.
Installazione CLI in ambiente Fedora.
Esempio minimo per capire la sintassi
Inventory: <syntaxhighlight lang="python"> web_servers = [
"web-01.example.net", "web-02.example.net",
] </syntaxhighlight>
Deploy: <syntaxhighlight lang="python"> from pyinfra.operations import server
server.shell(
name="Show uptime", commands=["uptime"],
) </syntaxhighlight>
Esecuzione: <syntaxhighlight lang="bash"> pyinfra inventory.py deploy.py </syntaxhighlight>
Idea chiave
Nel deployment VM di GazziNet, la UI non crea direttamente la VM. La UI:
- raccoglie i parametri
- valida input e rete
- crea un job locale
Poi il job chiama pyinfra, e pyinfra richiama un helper Python che parla con Proxmox via SSH.
Questa separazione aiuta a mantenere il flusso leggibile:
- frontend e login
- validazione e stato job
- runner pyinfra
- helper Proxmox
Regole documentali per questa area
La wiki deve contenere:
- spiegazioni umane
- runbook
- esempi
- struttura dei file
- procedure di verifica
La wiki non deve contenere:
- password
- token
- cookie di sessione
- segreti runtime
- dump completi di backend interni
Riferimenti esterni
Repository
Sorgente versionata in:
scripts-repo/pyinfra-proxmox-webui/
Pagine wiki versionate nello stesso repository:
scripts-repo/pyinfra-proxmox-webui/wiki/