Paketmanager & Betriebssystem
Nix / NixOS
Deklarative Builds und Systemkonfiguration. Im Repo: Flake,
Module unter nixos/, lokales Prüfen mit
nix build.
- Flake
-
Einstieg
flake.nixplus Lockflake.lock: pinnt Inputs und exportiert u. a.nixosConfigurations,devShells,colmenaHive,checks(Eval-Tests austests/, laufen mitnix flake checkmit). Brauchtnix-commandundflakes. - Nix store
-
/nix/store/…-hash-name: unveränderliche Build-Ergebnisse. Grundlage für Versionen nebeneinander und atomare Systemwechsel. - Generation
- Eine gebaute Systemkonfiguration zum Aktivieren. Wechsel atomar; alte Generationen erlauben Rollback.
- nix develop
-
Öffnet die Dev-Shell aus dem Flake
(
devShells.default). Ingroupdir-infrau. a. mittofu,just,colmena. - nix build
-
Baut ein Flake-Output, oft mit Symlink
./result. Zum lokalen Prüfen ohne Deploy. - NixOS-Modul
-
Datei unter
nixos/modules/mitoptionsundconfig. Prefixe hier:labEdge.*. - mkOption
- Hilfsfunktion zum Deklarieren einer Option (Typ, Default, Beschreibung).
Infrastructure as Code
Terraform / OpenTofu
In Lessons: Terraform-Begriffe (State, Plan,
Apply, Provider). CLI im Repo: tofu (OpenTofu),
weitgehend Drop-in. OpenTofu entstand als Community-Fork nach
HashiCorps Wechsel zur BSL (2023) und liegt unter der Linux
Foundation.
Lesson 0003.
Stacks: tofu/dns, tofu/proxmox.
- Provider
-
Plugin für eine API (Hetzner Cloud DNS, Proxmox, …). Siehe
tofu/*/providers.tf. - State
-
Buchführung der von Terraform verwalteten Remote-Objekte.
In
groupdir-infraremote in GitLab (groupdir-dns/groupdir-proxmox), nicht als Datei im Git-Repo. Siehe Repo-Betrieb. - Plan
-
Vorschau der Änderungen, ohne sie auszuführen. Beispiel:
tofu -chdir=tofu/dns plan -out=tfplan. - Apply
-
Führt einen Plan aus und aktualisiert Reality plus State.
Beispiel:
tofu -chdir=tofu/dns apply tfplan.
Ausrollen & Install
Deploy
Alltag: Colmena. Einmalig: Disko (Platten) und nixos-anywhere (Erstinstallation).
- Colmena
-
Deploy für NixOS-Hosts. Inventar (
targetHost,targetUser,tags) indeployment.nix;hive.nixbaut daraus die Colmena-Nodes. Befehle:colmena build,colmena apply,colmena apply --on HOST. - Disko
-
Deklarative Partitionierung:
nixos/hosts/*/disko.nix. Vor allem bei Install und Neuanlage. - nixos-anywhere
-
Einmalige Remote-Installation von NixOS; danach Colmena. Siehe
docs/install.md.
groupdir-infra
DNS
Lab-*.lab-A aus net/lab/hosts/; Zone
net/dns/groupdir.de.nix merged mit öffentlichen und
VPN-Records. Semantik:
DNS-Records,
lab-ipam.md.
- DNS source of truth
-
Lab:
net/lab/hosts/*.nix(Normalisierung innet/lab/hosts.nix) →net/lab/dns-records.nix. Zone:net/dns/groupdir.de.nix(staticRecords ++ labRecords, gebaut übernet/dns/records.nix-Konstruktoren). Daraus Hetzner (tofu/dns) und internes DNS (lab-gateway, vianet/dns/internal-view.nix). - Lab IPAM
-
net/lab/hosts/+just lab-ipam: freie IPs und Host-Zuordnung im Lab-LAN (192.168.200.0/24. - scope
-
public|internal|both. Öffentlich: Hetzner. Intern: lab-gateway. - target
-
Intern bei A-Records:
direct(→value) oderreverse-proxy(→ Gateway + Caddy zuupstream). - upstream
-
Bei
reverse-proxy: Backend-URL für Caddy, z. B.http://192.168.200.30:3000.
groupdir-infra
WireGuard
Tunnel zum Hub und Lab-Zugang. Inventar: WireGuard-IPAM, wireguard.md.
- WireGuard Git-SoT
-
net/wireguard/:network.nix+peers/*.nix. Vorbereitung für Cutover; live noch wireguard-ui. - WireGuard IPAM
-
just wireguard-ipam: belegte Tunnel-IPs (172.30.0.0/24und nächste freie Adressen. - Hub
-
VPS (
vpn.groupdir.de): öffentlicher Endpoint, aggregiert Peers. - Site-Peer
-
z. B. lab-gateway: reicht Lab-LAN per
extraAllowedIPsweiter. - AllowedIPs
- WireGuard: welche Ziele über den Peer gehen / welche Quellen von ihm akzeptiert werden.
Komfort
Hilfsmittel
Shortcuts um die nativen Befehle herum; Details stehen in den jeweiligen Tool-Abschnitten.
- just
-
Task-Runner; Rezepte in
justfile. Kürzt z. B. tofu- und Colmena-Aufrufe ab, ersetzt sie nicht.