From b0611efc576ac2b9bafaafb432033fb37a079466 Mon Sep 17 00:00:00 2001 From: Astro Date: Thu, 8 Apr 2021 02:35:46 +0200 Subject: [PATCH] doc --- README.md | 135 ++++++++++++++--------------------- doc/test-environment.md | 2 + doc/wifi-provisioning.md | 2 + nix/nixos-module/default.nix | 2 + 4 files changed, 60 insertions(+), 81 deletions(-) diff --git a/README.md b/README.md index af15988..37020cb 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Netzwerk im [Zentralwerk](http://www.zentralwerk.de/) +[Begrüßung von Menschen im Haus, die für ihren Anschluss Zugang zum Netzwerk brauchen](doc/hello.md) + ## Zweck Das Zentralwerk ist ein Gebäude, das bestmöglich vernetzt sein soll. Das beginnt mit der Bereitstellung vom Zugang zum Internet, reicht über das isolierte Zusammenführen von einzelnen Anschlüssen und endet mit Angebot von zeitgemäßen Diensten für alle, die das Netz nutzen wollen. @@ -7,60 +9,6 @@ Das Zentralwerk ist ein Gebäude, das bestmöglich vernetzt sein soll. Das begin Anstatt irgendwie rumzukonfigurieren, soll es eine Nachvollziehbarkeit (Reproduzierbarkeit) der gemachten Einstellungen geben. Mit der Transparenz soll es möglich sein, dass das Netzwerk möglichst einfach verwaltet werden kann. (Stichworte sind: Zusammenarbeit, Wiederherstellbarkeit, Teilhabe, Mitmachen, Nachahmen, …) -## allgemeine Informationen - -### Informationen für Menschen, die angeschlossen werden möchten - -[Begrüßung von Menschen im Haus, die für ihren Anschluss Zugang zum Netzwerk brauchen](doc/hello.md) - -### Informationen für Menschen, die das Netzwerk mit verwalten - -#### Inhaltsverzeichnis - -* [Verkabelung Patchpanel Haus B](cabling.md) -* [Planung der IP-Adressbereiche](subnets.md) -* (verschlüsselte) [Kontakte zu den Personen mit den einzelnen Anschlüssen](contact.md.gpg) -* Dokumentation - * [WiFi-Provisionierung](doc/wifi-provisioning.md) und Erstellung von Privatnetzen - * [Einrichtung einer Testumgebung fürs Mit- und Nachmachen (Entwicklung)](doc/test-environment.md) -* Unterverzeichnis [salt/](salt): Skripte (*salt states*) zum Aufbau des zentralen Services -* Unterverzeichnis [salt-pillar/](salt-pillar): individuelle Konfigurationsdaten - * **vlans** bildet Netznamen auf VLAN-IDs ab - * **subnets** und ../subnets.md enthält unsere IP-Netzplanung - * **hosts** sind alle statisch konfigurierten IP-Adressen - * **dhcp** enthält die zur Verfügung gestellten privaten Addressbereiche - * **switches** dient zur Konfigurationserzeugung für alle Managed Switches - * **cpe** sind Daten für Konfiguration des *Customer Premise Equipment* (WiFi Access Points) -* Datei top.sls listet die auf einzelnen Containern und im Host verwendeten Systemdienste - -#### Dinge die stets schieflaufen - -##### `salt server1 state.apply server1-network` - -Hier werden die Bridges abgerissen und neu erstellt. Danach hängen -gestartete lxc-Container nicht mehr dran. - -**Lösung:** Manuell hinzufügen mit `brctl addif` oder einfach die -Container neustarten. - -##### Switch-Konfigurationsskripte ausgeführt, dabei ist das Netz gestorben - -Das tritt auf wenn man so doll die Konfiguration verändert, dass die -Nummern der Link-Aggregation Groups sich ändern. Dabei landet server1, -von welchem gerade konfiguriert wird, temporär in einer Gruppe die -eigentlich zu was anderem gehört. - -**Lösung:** Skript auf eigenen Computer kopieren, direkt ans *mgmt* -hängen und ausführen. - -##### pub-Netz läuft, aber kein DHCP+Internet darüber verfügbar - -Eventuell hat `uci` bei der ap-Konfiguration die Switch-Konfiguration -für dieses VLAN nicht in `/etc/config/network` angelegt. - -* **Überprüfen**: `swconfig dev switch0 show` -* **Beheben**: VLAN manuell in `/etc/config/network` anelegen - ## Öffentlichkeit Warum ist das alles einsehbar? Für maximale Transparenz! @@ -69,39 +17,64 @@ Wir sind kein Unternehmen das Geheimnisse schützen muss. Stattdessen wollen wir Wie werden die (wenigen) persönlichen Daten "öffentlich" verwaltet? Mit entsprechender Verschlüsselung! Wir, ein kleiner Kreis von Menschen die das Netzwerk im Zentralwerk betreuen, haben dafür einen Geheimschlüssel. Im Übrigen behandeln wir gleichermaßen sicher die "heiligen" Zugangsdaten für die Geräte (und andere für den Betrieb wichtigen Instanzen). -## System +## Informationen für Lebewesen, die das Netzwerk mit verwalten -Verkabelung - * im Haus - * in Serverschränken +### Inhaltsverzeichnis -Server (Hardware) - * Bebriebssystem: Debian (GNU/Linux) - * Verwaltung der Konfiguration: - * [salt](https://www.saltstack.com/) - * Repository - * (generierte) Skripte - * Container: LXC - * Dienst DHCP: - * Dienst DNS: - * … +* [Verkabelung Patchpanel Haus B](cabling.md) + * TODO: tuerme, saal +* [Planung der IP-Adressbereiche](subnets.md) +* (verschlüsselte) [Kontakte zu den Personen mit den einzelnen Anschlüssen](contact.md.gpg) +* Dokumentation + * [WiFi-Provisionierung](doc/wifi-provisioning.md) und Erstellung von Privatnetzen + * [Einrichtung einer Testumgebung fürs Mit- und Nachmachen (Entwicklung)](doc/test-environment.md) +* `flake.nix` und Unterverzeichnis [nix/](nix): Konfigurationsskripte -Geräte für die Verteilung vom Netzwerk - * Switches (bis zu den Anschlüssen) - * Access Points (hinter den Anschlüssen) +### Nixification Roadmap -Zugänge fürs Internet - * bezogene Anschlüsse bei anbietenden Unternehmen - * bezogener Zugang zu einem VPN bei anbietenden Unternehmen +- [x] Einlesen der Salt-Daten in Nix +- [x] Containererstellung +- [ ] Migration der Container +- [ ] device-scripts auf Site Config umstellen +- [ ] Site Config dumpen, Salt-Daten löschen -Randbedingungen: - * Server (Hardware) - * Betriebssystem: Proxmox VE (als kleines Cluster, auch für Dienste) +### Nix Flake -## Zukunft +[Segfaulting nix?](https://github.com/NixOS/nix/issues/4178) Until +resolved, `export GC_DONT_GC=1` -#### Einsatz von NixOS auf dem Server +#### Site Config -Mittelfristig soll das System bestmöglich mit NixOS betrieben werden. Entsprechend würde dann Debian und (mindestens Großteile) von salt ersetzt werden. +Wir verwenden das Module-System von NixOS eigenständig in +`nix/lib/config` weil: -Mit NixOS wäre eine bessere (absolutere) Kontrolle möglich. Die Konfiguration wird nicht komplizierter. +* Checks gegen options +* Nutzbarkeit in Paketen (device-scripts) ausserhalb eines + `nixos-rebuild` +* Konfigurationsdaten über mehr als 1 Host + +#### nixosConfigurations + +Systemkonfigurationen für alle Hosts mit der `role` `"server"` oder +`"container"` + +#### nixosModule + +Alle NixOS-Einstellungen + +### LXC-Containers auf Server + +TODO + +build-container +lxc-attach +systemctl start lxc@$host + +### Dinge die stets schieflaufen + +#### pub-Netz läuft, aber kein DHCP+Internet darüber verfügbar + +Eventuell hat `uci` bei der ap-Konfiguration die Switch-Konfiguration +für dieses VLAN nicht in `/etc/config/network` angelegt. + +* **Überprüfen**: `swconfig dev switch0 show` diff --git a/doc/test-environment.md b/doc/test-environment.md index b38e82f..9c2f1b4 100644 --- a/doc/test-environment.md +++ b/doc/test-environment.md @@ -1,5 +1,7 @@ # Create a Virtual Machine +TODO: nixify + ```shell dd if=/dev/zero of=salt.hda bs=1M count=1 seek=10239 wget http://cdimage.debian.org/debian-cd/8.7.1/amd64/iso-cd/debian-8.7.1-amd64-netinst.iso diff --git a/doc/wifi-provisioning.md b/doc/wifi-provisioning.md index 3bb40ee..933f1f5 100644 --- a/doc/wifi-provisioning.md +++ b/doc/wifi-provisioning.md @@ -1,5 +1,7 @@ # Provisionierung eines WLAN-Routers +TODO: nixify + Sofern der Router durch uns provisioniert wird (ansonsten siehe unten) 1. Kontaktdaten und Dosennummer in `contacts.md` vermerken diff --git a/nix/nixos-module/default.nix b/nix/nixos-module/default.nix index 87d5136..e06f7dd 100644 --- a/nix/nixos-module/default.nix +++ b/nix/nixos-module/default.nix @@ -1,3 +1,5 @@ +# Pulls together NixOS configuration modules according to the +# name/role of the host to be built. { hostName, config, lib, pkgs, ... }: let