Pyinfra: differenze tra le versioni
(Aggiornamento) |
(Espansione pagina Pyinfra con struttura umana e link di approfondimento) |
||
| Riga 2: | Riga 2: | ||
= Pyinfra = | = Pyinfra = | ||
'''Pyinfra''' in GazziNet | '''Pyinfra''' in GazziNet va letto su due livelli: | ||
* come strumento generale di automazione scritto in Python | |||
* come implementazione concreta gia pubblicata su <code>bot.gazzi.net/pyinfra/</code> per creare VM Proxmox via browser | |||
Questa pagina | 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: <code>https://bot.gazzi.net/pyinfra/</code> | |||
* autenticazione: LDAP | |||
* runner: <code>pyinfra</code> locale su <code>bot.gazzi.local</code> | |||
* 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: | |||
# [[Pyinfra/Deploy automatico VM Proxmox]] | |||
Se vuoi capire il codice: | |||
# [[Pyinfra/Implementazione deploy VM linea per linea]] | |||
[ | |||
[ | == Mappa delle pagine == | ||
* [[Esempi Pyinfra]] | |||
Guida pratica con esempi base e avanzati di pyinfra. | |||
* [[Pyinfra/Deploy automatico VM Proxmox]] | |||
Runbook umano della web UI pubblicata su bot.gazzi.net. | |||
* [[Pyinfra/Implementazione deploy VM linea per linea]] | |||
Spiegazione tecnica del codice che realizza il deploy automatico di VM. | |||
* [[Confronto Ansible vs Pyinfra]] | |||
Confronto generale di approccio. | |||
* [[Installazione Pyinfra su Fedora]] | |||
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> | </syntaxhighlight> | ||
Deploy: | |||
<syntaxhighlight lang="python"> | |||
from pyinfra.operations import server | |||
<syntaxhighlight lang=" | |||
server.shell( | |||
name="Show uptime", | |||
commands=["uptime"], | |||
) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Esecuzione: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
pyinfra inventory.py deploy.py | |||
</syntaxhighlight> | </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 == | |||
* [https://pyinfra.com/ Sito ufficiale] | |||
* [https://docs.pyinfra.com/en/3.x/ Documentazione ufficiale] | |||
* [https://www.gazzi.net/pyinfra-proxmox-webui/ Scheda pubblica WordPress] | |||
== Riferimenti | |||
* [ | |||
* [ | |||
* [https://www.gazzi.net/pyinfra-proxmox-webui/ Scheda pubblica | |||
* [https://www.gazzi.net/2026/03/29/pyinfra-proxmox-webui-proxmox-ldap-bot-gazzi-net/ Articolo di dettaglio] | * [https://www.gazzi.net/2026/03/29/pyinfra-proxmox-webui-proxmox-ldap-bot-gazzi-net/ Articolo di dettaglio] | ||
== Repository == | == Repository == | ||
Sorgente versionata: | Sorgente versionata in: | ||
* <code>scripts-repo/pyinfra-proxmox-webui/</code> | * <code>scripts-repo/pyinfra-proxmox-webui/</code> | ||
Pagine wiki versionate nello stesso repository: | |||
* <code>scripts-repo/pyinfra-proxmox-webui/wiki/</code> | |||
Versione delle 18:51, 29 mar 2026
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/