Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unified config schema #6

Open
noxilixon opened this issue Sep 18, 2023 · 3 comments
Open

Unified config schema #6

noxilixon opened this issue Sep 18, 2023 · 3 comments
Labels
Unified Firmware Steps to bring the firmwares back together

Comments

@noxilixon
Copy link

We would like to create a unified config file, that is in JSON, based on bbb-configs and with missing features from the ffwizard_spec added. Those features are:

  • vlan / port config
  • ip pools for automatic selection
  • tunnel speed

This was discussed on the community day 16.9.23

@noxilixon
Copy link
Author

Nach der aufschlussreichen Diskussion am Abend des letzten Hackdays versuche ich hier mal mein Verständnis vom aktuellen Stand der Überlegungen zu skizzieren.

  1. Wir wollen ein File Format (json) welches es uns ermöglicht die Konfiguration eines Standorts in einer Datei zu beschreiben und diese damit reproduzierbar zu erstellen. Das Format soll auf das etablierte bbb-configs aufbauen. Das Config-File beschreibt in der Sprache unserer Freifunk Domäne auf abstrakte weise was wir machen wollen. Diese Beschreibung wird dann in Konfigurationen/Befehle umgewandelt.

  2. Es gibt eine minimal Config, bei der nur wenige Angaben nötig sind und die default Werte genutzt werde. Diese können im Expert Mode mit einer ausführlichen Config explizit gesetzt werden.

  3. Die Konfiguration eines Routers soll über folgende Arten bearbeitet werden können

  • A: Änderungen werden in Luci vorgenommen (Oberfläche bildet die Config-Datei als Formular ab)
  • B: Ein neues Config-File wird auf den Router geladen oder direkt dort verändert
  • C: Das Gerät wird mit einem Image geflasht, welches die Config beinhaltet (bbb-configs Ansatz)
  1. Direkte Änderungen der Einstellungen am Router sind weiterhin möglich, werden aber nicht supportet/berücksichtigt, was in der Folge zu unerwartetem Verhalten führen kann

  2. Die Config soll so eingebunden werden, das folgende openWRT features weiterhin möglich sind:

  • A: Preview von den Änderungen vor dem commiten
  • B: Auto-Rollback bei Luci, wenn Gerät nicht mehr erreicht wird
  1. Es soll einen Schema Validator geben, der Config Files automatisiert testen kann.

@noxilixon
Copy link
Author

Eine der großen Fragen war noch, was die Source of truth ist und wie wir die Features aus Punkt 5 umsetzen. Ich bin mir nicht mehr Sicher was der Ausgang der Diskussion war, aber ich habe dazu folgenden Vorschlag.

Uci ist das Standard tool zum Konfigurieren auf OpenWRT und bringt die in Punkt 5 genannten Features mit. Wenn wir also die config in uci schreiben würden, hätten wir all diese Sachen direkt dabei. Wir haben uns allerdings entschieden JSON zu nutzen, da dies einige Vorteile mit sich bringt. Aber kein Problem, für unsere Anwendungsfälle können wir zwischen den beiden Formaten hin und her konvertieren denke ich. Das heisst wir können eine uci repräsentation von der config auf dem Router haben und json zum editieren nutzen. Konkret würde das bedeuten das es folgende commands gibt:

ffb-config export     # Erzeugt export der uci config als json
ffb-config validate   # Checkt ob ein gegebenes json file valid ist
ffb-config import     # validiert ein Json file und konvertiert es zu uci und ersetzt die uci config
ffb-config edit       # Erzeugt export, öffnet diesen in texteditor und sobald gespeichert wird, wird import ausgeführt
ffb-config diff       # Erzeugt export und macht diff mit der Angegebenen JSON Config
ffb-config apply      # Wendet die uci Konfiguration an. (Egal ob vorher mit import, edit oder uci calls bearbeitet)

Weiterhin kann dann auch noch direkt mit uci das uci file bearbeitet werden und entsprechend diff, revert etc. gemacht werden. Genauso wie über Luci.

@Akira25
Copy link
Member

Akira25 commented Jan 13, 2024

Kleine Ergänzung dazu: Luci unterstütz JSON-Maps
https://openwrt.github.io/luci/jsapi/LuCI.form.JSONMap.html

Es wäre also möglich, dass die JSON-Datei z.B. mit einem Editor in LuCI bearbeitet würde.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Unified Firmware Steps to bring the firmwares back together
Projects
None yet
Development

No branches or pull requests

2 participants