DEV Community

Cover image for RaspberryPi 3 Homelab & Vibe "IaC"
Massimo Biagioli
Massimo Biagioli

Posted on

RaspberryPi 3 Homelab & Vibe "IaC"

Per Natale vorrei regalarmi un nuovo RaspberryPi ... Ops, ma questo è un Deja-Vu!
Proprio un anno fa, in questo articolo, avevo iniziato a fare esperimenti sul mio vecchio RaspberryPi 3 per provare a mettere in piedi una Homelab.
Però, nel frattempo, qualcosa è cambiato: l'avvento del vibe coding ha modificato il modo in cui uno sviluppatore si approccia al codice.
Quindi ho tentato di ricalibrare il mio esperimento, utilizzando il vibe coding per creare un'infrastruttura "su misura" per il mio raspberry.

Il "Kickstart"
Ovviamente, non ho dato a lui "le chiavi", chiedendogli banalmente "Hey, ho bisogno che mi crei un'infrastruttura per il mio RaspberryPi 3". No, non avrebbe funzionato. E non è quello che volevo.
La "Big Picture" volevo averla bene in testa io.
Era doveroso per me pormi alcune domande:

  • Quale stack tecnologico usare?
  • Come interagire con lo strumento che avrei creato?

E dare dei vincoli importanti:

  • Non dovrà richiedere configurazioni complicate per farlo funzionare
  • Dovrà essere facile da manutenere
  • Dovrà essere facilmente estendibile

E quindi ho tracciato il perimetro e stabilito le regole del gioco:

  • Avrei usato Ansible
  • Avrei interagito con lo strumento tramite un semplice Makefile: è uno strumento per me, non ho bisogno di una UI. Digitando "make" lo strumento mi avrebbe fornito tutte le operazioni disponibili.
  • Feedback loop rapido: basta lanciare il comando ed osservare l'output, niente di più, niente di meno.

Tanti Playbooks, ma un'unica filosofia
L'input era chiaro: un playbook deve svolgere solamente un'operazione. Queste al momento quelle disponibili:

Usage: make run-playbook PLAYBOOK=update [VERBOSE=true]

📚 Available Playbooks:
  📋 deploy
  📋 git
  📋 git-cleanup
  📋 grafana
  📋 grafana-cleanup
  📋 health-check
  📋 loki
  📋 loki-cleanup
  📋 mariadb
  📋 mariadb-cleanup
  📋 mosquitto
  📋 mosquitto-cleanup
  📋 nginx
  📋 nginx-cleanup
  📋 node
  📋 node-cleanup
  📋 redis
  📋 redis-cleanup
  📋 update
  📋 uv
  📋 uv-cleanup
Enter fullscreen mode Exit fullscreen mode

In questo modo, è anche facile tramite vibe coding installare un nuovo componente, perchè l'agente (nel mio caso GPT-4.1) può basarsi su degli esempi funzionanti.
Ecco un esempio di come creo un nuovo playbook:

Crea un nuovo playbook: postgresql.
Crea anche il playbook di cleanup.
Aggiorna il Makefile.
Aggiorna il Readme.
Enter fullscreen mode Exit fullscreen mode

Ovviamente, quando l'agente può basarsi su degli esempi, si muoverà molto meglio rispetto a quando deve inventare.
E spesso ci prende "al primo colpo".

Obiettivi raggiunti
Ok, ma cosa avrebbe dovuto fare questo strumento?
Gli obiettivi che mi ero prefissato (e che ho raggiunto grazie al vibe coding in tempi rapidi, considerando che ci ho investito solo poche ore) sono i seguenti:

  • Installazione di servizi (MariaDB, Nginx, Mosquitto, ecc.)
  • Installazione web app (Python) come servizio linux
  • Abilitate/Disabilitare/Verificare stato dei servizi installati
  • Healthcheck sistema (produzione di un report)

Ma l'obiettivo più importante raggiunto è stato ... il non acquisto di un nuovo RaspberryPi 5!

Conclusioni
Il vibe coding può aiutare moltissimo per velocizzare la fase di sviluppo, permettendoci di concentrarci sulla "Big Picture", spostando i ragionamenti più ad alto livello. Ma non dimentichiamoci mai di controllare ciò che l'agente genera per noi, perchè non sempre è ciò che vogliamo, quindi non va persa la skill tecnica, sarebbe un errore grossolano dimenticarsi di sviluppare, e voler "disimparare". L'intento è quello di "amplificare".

Trovate il repository di questo progetto in Github a questo indirizzo.

Top comments (0)