[lime] update about GSoC

Delete this message

Reply to this message
Author: cri
Date:  
To: lime
Subject: [lime] update about GSoC
hi,

this is the blog article
of the project we are mentoring for this year:

https://blog.freifunk.net/2023/05/27/gsoc23-automation-tools-for-libremesh-firmware-build-and-monitoring/

I copy and paste the translations here and if there are not disagreeemnts,
I'll publish in our news on the website,
but we can speak about this on the next meeting that is soon, on 3th of
June. https://libremesh.org/communication.html

If there are comments about the project I'm happy to hear, please send
an email in mailinglist!

Hugs Cristina

_______________

Castigliano
Herramientas de automatización para la construcción del firmware
LibreMesh y monitorización

Presentación

¡Hola a todos! Soy Samlo. Soy un webdev fullstack que vive en una zona
rural de Italia y dedica parte de su tiempo a construir y mantener una
red comunitaria autogestionada basada en LibreMesh
https://antennine.noblogs.org/.

Para GSoC'23, estaré trabajando en la creación de un conjunto de
playbooks y roles ansible para realizar tareas comunes de administración
de red útiles para un equipo técnico de una red comunitaria basada en
LibreMesh.
Esta primera entrada de blog pretende proporcionar detalles de los
antecedentes necesarios para entender el proyecto y su implementación.

## Qué
Como se indica en https://libremesh.org/, LibreMesh es un marco modular
para la creación de firmware basado en OpenWrt para nodos de malla
inalámbricos.
Es una lista de paquetes (lime-packages) con soporte para varios
protocolos mesh, para instalarlos y configurarlos correctamente, y
ofrece al usuario final una interfaz web dedicada (lime-app).
Tiene soporte para potencialmente todos los dispositivos soportados por
OpenWrt, y siguiendo la documentación encontrarás toda la información
para construir el firmware y configurar los ficheros principales y
empezar a usarlo.
También tiene una lista de configuraciones de red usadas por diferentes
comunidades (network-profiles) que proporcionan información sobre cómo
configurar el firmware (instalando los paquetes) y la red (por ejemplo,
editando los ficheros principales de configuración), o ambos, para
unirse a la comunidad mesh.

## Motivaciones
Libremesh es un conjunto de paquetes que pueden ser incluidos como feeds
- a través de paquetes fuente o precompilados - en un sistema de build
de OpenWrt y luego seleccionar los de tu elección, pero solo puedes
sobreescribir las configuraciones por defecto de OpenWrt manualmente y
respaldar los archivos de configuración producidos para cada build.

En este escenario, es necesario guardar configuraciones y formas de
reproducir la misma imagen de firmware.
En lugar de empezar a escribir una lista de scripts bash para manejar
las necesidades de nuestra comunidad, estoy interesado en explorar la
posibilidad de utilizar una herramienta de gestión de configuración y
automatización como Ansible https://docs.ansible.com.

Esto simplificaría las necesidades comunes, en particular
- automatizar la creación de grupos de dispositivos con configuraciones
específicas, paquetes, versiones de libremesh y openwrt.
- crear firmware de prueba, experimentos de versionado
- compilar en localhost o en una máquina remota
- gestionar configuraciones (monitorización, vpn, certificados ssl) en
el mismo sistema que también construye firmware
- automatizar la entrada de información sincronizable entre dispositivos
de red y servidores
- compartir configuraciones en un conjunto significativo y reproducible
para otros dentro y fuera de la red de la comunidad local.

## Un problema
Libremesh no mantiene un sistema para construir consistentemente para
todos los dispositivos soportados o para parchear openwrt para
satisfacer las necesidades de objetivos o dispositivos particulares.
Así que cada comunidad debe averiguar cómo construir firmware para los
dispositivos que utiliza.

Una inspiración para esto vino del proyecto Gluon
https://gluon.readthedocs.io/ que incluye un sistema para mantener un
seguimiento de paquetes específicos para objetivos, subobjetivos y
dispositivos openwrt.

## Entregables del proyecto

- Tener un conjunto ansible de playbooks y roles para construir
firmwares openwrt
- Tener un conjunto ansible de playbooks y roles para construir
firmwares libremesh
- Tener un rol ansible para construir firmwares libremesh dependiendo de
la versión de libremesh, la versión de openwrt, los paquetes por defecto
de libremesh, los paquetes específicos del objetivo o dispositivo
libremesh, los paquetes de la comunidad libremesh, el conjunto de
paquetes de la comunidad libremesh vinculados a una lista específica de
dispositivos.
- Tener un conjunto ansible de playbooks y roles para configurar un
sistema de monitorización/probación/alerta/visualizador métrico.

## Reflexiones finales
En este periodo de diseño y planos del proyecto, antes de empezar a
codificar he pensado mucho en los casos de uso, quien podría querer
usarlo, y simplificar las contribuciones para mantener actualizado el
código en el futuro.

Espero publicar en https://galaxy.ansible.com/ dos colecciones de roles
(openwrt y libremesh) y poner a disposición a través del repositorio git
el conjunto de playbooks para utilizar los roles anteriores.

Os pondré al día en Julio.

/////////////////////////////////////////////////////////////

Italiano
Strumenti di automazione per la creazione del firmware LibreMesh e il
monitoraggio dei nodi

Introduzione

Ciao a tutti! Sono Samlo. Sono un webdev fullstack che vive in una zona
rurale in Italia e dedica parte del suo tempo a costruire e mantenere
una rete comunitaria autogestita basata su LibreMesh
https://antennine.noblogs.org/.

Per la GSoC'23, lavorerò alla creazione di un set di playbook e ruoli
ansible per svolgere le comuni attività di amministrazione della rete
utili per un team tecnico di una rete comunitaria basata su LibreMesh.
Questo primo post del blog intende fornire dettagli sul background
necessario per comprendere il progetto e la sua implementazione.

## Cosa
Come si legge sul sito https://libremesh.org/, LibreMesh è un framework
modulare per la creazione di firmware basati su OpenWrt per nodi mesh
wireless.
È un elenco di pacchetti (lime-packages) con supporto per vari
protocolli mesh, per installarli e configurarli correttamente, e offre
all'utente finale un'interfaccia web dedicata (lime-app).
Ha il supporto potenzialmente per tutti i dispositivi supportati da
OpenWrt, seguendo la documentazione si trovano tutte le informazioni per
costruire il firmware e configurare i file principali e iniziare a usarlo.
Dispone inoltre di un elenco di configurazioni di rete utilizzate da
diverse comunità (network-profiles) che forniscono informazioni su come
configurare il firmware (installando i pacchetti) e la rete (ad esempio
modificando i file di configurazione principali), o entrambi, per unirsi
alla community mesh.

## Motivazioni
Libremesh è un insieme di pacchetti che si possono includere come feed -
tramite sorgenti o pacchetti precompilati - in un sistema di
compilazione di OpenWrt e quindi selezionare quelli di propria scelta,
ma è possibile sovrascrivere le configurazioni predefinite di OpenWrt
solo manualmente e fare il backup dei file di configurazione prodotti
per ogni compilazione.

In questo scenario è necessario salvare le configurazioni e i modi per
riprodurre la stessa immagine del firmware.
Invece di iniziare a scrivere una lista di script bash per gestire le
esigenze della nostra comunità, sono interessato a esplorare la
possibilità di utilizzare uno strumento di gestione e automazione della
configurazione come Ansible https://docs.ansible.com.

Questo porterebbe a semplificare le esigenze comuni, in particolare:
- automatizzare la creazione di gruppi di dispositivi con specifiche
configurazioni, pacchetti, versioni di libremesh e openwrt.
- creare firmware di prova, esperimenti di versionamento versionando gli
esperimenti
- compilare su localhost o su una macchina remota
- gestire le configurazioni (monitoraggio, vpn, certificati ssl) nello
stesso sistema che costruisce anche i firmware
- automatizzare l'inserimento di informazioni che possono essere
sincronizzate tra dispositivi di rete e server
- condividere le configurazioni in un insieme significativo e
riproducibile per altre persone all'interno e all'esterno della rete
della comunità locale.

## Un problema
Libremesh non gestisce un sistema per costruire coerentemente per tutti
i dispositivi supportati o per patchare openwrt per soddisfare le
esigenze di particolari target o dispositivi.
Quindi ogni comunità dovrebbe capire come costruire i firmware per i
dispositivi che utilizza.

Un'ispirazione per questo è venuta dal progetto Gluon
https://gluon.readthedocs.io/ che include un sistema per mantenere
tracce di pacchetti specifici relativi a target, sottotarget e
dispositivi openwrt.

## Risultati del progetto
- Avere un insieme di playbook e ruoli ansible per costruire i firmware
openwrt
- Disporre di un insieme di playbook e ruoli ansible per costruire i
firmware libremesh
- Avere un ruolo ansible per costruire i firmware di libremesh a seconda
della versione di libremesh, della versione di openwrt, dei pacchetti di
default di libremesh, dei pacchetti specifici del target o del
dispositivo di libremesh, dei pacchetti della comunità di libremesh,
dell'insieme di pacchetti della comunità di libremesh collegati a un
elenco specifico di dispositivi.
- Disporre di un insieme di playbook e ruoli ansible per impostare un
sistema di monitoraggio/probing/allarme/visualizzazione metrica.

## Pensieri conclusivi
In questo periodo di progettazione , prima di iniziare la codifica ho
pensato molto ai casi d'uso, a chi potrebbe volerlo usare e a
semplificare i contributi per mantenere aggiornato il codice in futuro.

Non vedo l'ora di pubblicare su https://galaxy.ansible.com/ due raccolte
di ruoli (openwrt e libremesh) e di rendere disponibile tramite
repository git l'insieme dei playbook per utilizzare i ruoli di cui sopra.

Vi aggiornerò a luglio.