add: Distro-Entscheidung (Debian 13 + KDE), Ansible-Skelett, ADR

This commit is contained in:
2026-05-17 21:33:03 +02:00
parent 8885643b84
commit 0f81a6f6eb
14 changed files with 157 additions and 20 deletions

View File

@@ -4,33 +4,54 @@ Linux-Dualboot-Rollout auf Toms drei Arbeitsrechnern, parallel zu Windows.
## Zielgeräte ## Zielgeräte
| Host | Rolle | Hardware (TBD) | Status | | Host | Rolle | Hardware | Status |
|------|-------|----------------|--------| |------|-------|----------|--------|
| Notebook | mobile Arbeit | | geplant | | notebook | mobile Arbeit | TBD | geplant |
| PC | Hauptrechner | | geplant | | pc | Hauptrechner | TBD | geplant |
| Werkstatt-PC | Werkstatt | — | geplant | | werkstatt | Werkstatt-PC | TBD | geplant |
## Anforderungen > Hardware-Inventar wird pro Host in `ansible/host_vars/<host>.yml` gepflegt.
- Dualboot neben bestehender Windows-Installation ## Entscheidungen
- Schlankes System, KDE Plasma als Desktop
- Identische Konfiguration auf allen drei Maschinen (soweit sinnvoll)
- Integration in vorhandene LAN-Infrastruktur (`egonetix.lan` / `egonlebt.lan`)
## Distribution - **Distribution:** Debian 13 "Trixie" Stable mit KDE Plasma 6 (Netinstall, `firmware-netinst`)
- **Konfigurationsmanagement:** Ansible-Playbook (in `ansible/`)
- **Bootloader/Dualboot:** GRUB neben bestehendem Windows-Bootloader; `os-prober` aktiviert
Auswahl steht noch aus — siehe `docs/distro-auswahl.md` (folgt). Begründung siehe `docs/distro-auswahl.md`.
## Struktur (geplant) ## Struktur
``` ```
linux-workstations/ linux-workstations/
├── README.md ├── README.md
├── docs/ # Entscheidungen, Vergleich, Installationsnotizen ├── docs/
├── install/ # Preseed/Autoinstall-Konfigs, Partitionierungsskripte │ └── distro-auswahl.md # ADR Distribution
├── postinstall/ # Provisioning (Pakete, Dotfiles, Hardening) ├── install/ # Netinstall-Preseed, Partitionierungsnotizen (folgt)
└── per-host/ # Maschinenspezifische Overrides └── ansible/
├── notebook/ ├── ansible.cfg
├── pc/ ├── inventory.yml
── werkstatt/ ── site.yml # Top-Level Playbook
├── group_vars/all.yml
├── host_vars/{notebook,pc,werkstatt}.yml
└── roles/
├── base/ # Grundsystem, APT-Quellen, Firmware
├── desktop_kde/ # KDE Plasma + Anwendungen
├── hardening/ # SSH, UFW, unattended-upgrades
├── dev_tools/ # Editor, Git, Sprachen
└── workstation_apps/ # Browser, Office, Mediencodecs
``` ```
## Workflow
```bash
# Auf einem Zielrechner nach Erstinstallation:
ssh-copy-id tom@notebook
ansible -i ansible/inventory.yml notebook -m ping
ansible-playbook -i ansible/inventory.yml ansible/site.yml --limit notebook
```
## Repo
- Gitea: http://docker.egonlebt.lan:3000/egon/linux-workstations
- Eingebunden als Submodule in `claude-workspace`

10
ansible/ansible.cfg Normal file
View File

@@ -0,0 +1,10 @@
[defaults]
inventory = inventory.yml
host_key_checking = False
retry_files_enabled = False
stdout_callback = yaml
roles_path = roles
interpreter_python = auto_silent
[ssh_connection]
pipelining = True

View File

@@ -0,0 +1,15 @@
---
# Defaults für alle Workstations
timezone: Europe/Berlin
locale: de_DE.UTF-8
keyboard_layout: de
# APT
apt_components:
- main
- contrib
- non-free-firmware
enable_backports: true
# Benutzer
primary_user: tom

View File

@@ -0,0 +1,7 @@
---
# Hardware: TBD
# Besonderheiten Notebook: Akku-Management, WLAN-Firmware, Suspend
extra_packages:
- tlp
- powertop
- firmware-iwlwifi # bei Intel-WLAN

3
ansible/host_vars/pc.yml Normal file
View File

@@ -0,0 +1,3 @@
---
# Hardware: TBD
extra_packages: []

View File

@@ -0,0 +1,4 @@
---
# Hardware: TBD
# Werkstatt-Rolle: ggf. CAD-Viewer, Druckdienste, weniger Multimedia
extra_packages: []

13
ansible/inventory.yml Normal file
View File

@@ -0,0 +1,13 @@
all:
children:
workstations:
hosts:
notebook:
ansible_host: notebook.egonlebt.lan
pc:
ansible_host: pc.egonlebt.lan
werkstatt:
ansible_host: werkstatt.egonlebt.lan
vars:
ansible_user: tom
ansible_become: true

View File

@@ -0,0 +1,3 @@
---
# Grundsystem: APT-Quellen, Lokalisierung, Firmware, Hilfspakete
# TODO: implementieren — Skeleton-Datei

View File

@@ -0,0 +1,3 @@
---
# KDE Plasma 6, SDDM, KDE-Anwendungen
# TODO: implementieren — Skeleton-Datei

View File

@@ -0,0 +1,3 @@
---
# Git, Editor, Sprachen (Python/Node/Perl für FHEM)
# TODO: implementieren — Skeleton-Datei

View File

@@ -0,0 +1,3 @@
---
# SSH-Hardening, UFW, unattended-upgrades, fail2ban
# TODO: implementieren — Skeleton-Datei

View File

@@ -0,0 +1,3 @@
---
# Browser, Office, Multimedia-Codecs
# TODO: implementieren — Skeleton-Datei

10
ansible/site.yml Normal file
View File

@@ -0,0 +1,10 @@
---
- name: Provision Linux workstations
hosts: workstations
gather_facts: true
roles:
- base
- desktop_kde
- hardening
- dev_tools
- workstation_apps

39
docs/distro-auswahl.md Normal file
View File

@@ -0,0 +1,39 @@
# Distributionsauswahl
## Entscheidung
**Debian 13 "Trixie" Stable** mit **KDE Plasma 6**, installiert via offiziellem **Netinstall-ISO**.
## Kontext
Drei Geräte (Notebook, Haupt-PC, Werkstatt-PC) sollen Linux **parallel zu Windows** bekommen. Anforderungen:
- schlankes System, keine Bloatware
- KDE Plasma als Desktop
- möglichst identische Basis auf allen drei Maschinen → reproduzierbar
- Integration in bestehende selbst gehostete Infrastruktur (Gitea, SSH, später ggf. eigene APT-Repos)
- langfristige Pflege ohne Vendor-Abhängigkeit
## Bewertete Alternativen
| Distro | Pro | Contra | Verworfen, weil |
|---|---|---|---|
| **Debian 13 + KDE** | reines Debian, planbare Releases, Netinstall = schlank, riesige Community, kein Telemetrie-/Snap-Overhead | manuelle Konfiguration nötig (Codecs, Firmware) | ✅ **gewählt** |
| Kubuntu 24.04 LTS | bequem, beste HW-Erkennung, 5 Jahre Support | Snap-Pakete, Canonical-Telemetrie, kein reines Debian | nicht puristisch genug, Snap unerwünscht |
| MX Linux KDE | Debian-Basis, vorkonfiguriert, MX-Snapshots für Klone | eigener Init-/Repo-Stack überlagert Debian, kleinere Community | Mehrwert vs. Plain Debian gering, sobald Ansible vorhanden |
| Spiral Linux KDE | Debian mit Sane Defaults | Solo-Maintainer → Pflegerisiko | zu hohes Bus-Faktor-Risiko |
## Konsequenzen
- **Installation:** Netinstall-ISO, Task `KDE Plasma` abwählen oder bewusst auswählen, Firmware-Variante (`firmware-netinst`) nehmen wegen WLAN/Grafik
- **Postinstall** läuft komplett über Ansible (Repo `ansible/`)
- **Codecs/Firmware:** über `contrib`/`non-free-firmware` APT-Komponenten
- **Backports** aktivieren für punktuell neuere Pakete (Kernel, Mesa) falls Hardware das braucht
- **Updates:** Stable-Modell → Sicherheitsupdates automatisch (`unattended-upgrades`), Feature-Updates beim Release-Wechsel
## Offene Punkte
- Filesystem-Layout: ext4 oder Btrfs+Snapper? — TBD nach Hardware-Inventar
- Disk-Encryption (LUKS): pro Gerät entscheiden (Notebook ja, Werkstatt ggf. nein)
- Display-Manager: SDDM (KDE-Standard) → vorerst behalten
- Wayland oder X11 als Default — Plasma 6 ist Wayland-first, daran orientieren