Pyinfra: differenze tra le versioni
(Aggiornamento) |
(Espansione) |
||
| (3 versioni intermedie di uno stesso utente non sono mostrate) | |||
| 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. | |||
== Domanda pratica tipica == | |||
Se devi controllare 10 server: | |||
</ | * sul '''manager''' installi <code>pyinfra</code>, tieni inventory e deploy e da li lanci i job | ||
* sui '''10 server target''' non installi <code>pyinfra</code>, ma devi avere accesso SSH e permessi adeguati | |||
La spiegazione completa con esempi e nella pagina: | |||
* [[Esempi Pyinfra]] | |||
< | == Esempio minimo per capire la sintassi == | ||
Inventory: | |||
<pre> | |||
web_servers = [ | |||
"web-01.example.net", | |||
"web-02.example.net", | |||
] | |||
</pre> | |||
Deploy: | |||
<pre> | |||
from pyinfra.operations import server | |||
== | server.shell( | ||
name="Show uptime", | |||
commands=["uptime"], | |||
) | |||
</pre> | |||
< | Esecuzione: | ||
<pre> | |||
pyinfra inventory.py deploy.py | |||
</pre> | |||
== 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: | |||
La | * 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] | |||
* | |||
* [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 attuale delle 19:21, 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
- 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.
Domanda pratica tipica
Se devi controllare 10 server:
- sul manager installi
pyinfra, tieni inventory e deploy e da li lanci i job - sui 10 server target non installi
pyinfra, ma devi avere accesso SSH e permessi adeguati
La spiegazione completa con esempi e nella pagina:
Esempio minimo per capire la sintassi
Inventory:
web_servers = [
"web-01.example.net",
"web-02.example.net",
]
Deploy:
from pyinfra.operations import server
server.shell(
name="Show uptime",
commands=["uptime"],
)
Esecuzione:
pyinfra inventory.py deploy.py
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/