add: Distro-Entscheidung (Debian 13 + KDE), Ansible-Skelett, ADR
This commit is contained in:
61
README.md
61
README.md
@@ -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
10
ansible/ansible.cfg
Normal 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
|
||||||
15
ansible/group_vars/all.yml
Normal file
15
ansible/group_vars/all.yml
Normal 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
|
||||||
7
ansible/host_vars/notebook.yml
Normal file
7
ansible/host_vars/notebook.yml
Normal 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
3
ansible/host_vars/pc.yml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
# Hardware: TBD
|
||||||
|
extra_packages: []
|
||||||
4
ansible/host_vars/werkstatt.yml
Normal file
4
ansible/host_vars/werkstatt.yml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
# Hardware: TBD
|
||||||
|
# Werkstatt-Rolle: ggf. CAD-Viewer, Druckdienste, weniger Multimedia
|
||||||
|
extra_packages: []
|
||||||
13
ansible/inventory.yml
Normal file
13
ansible/inventory.yml
Normal 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
|
||||||
3
ansible/roles/base/tasks/main.yml
Normal file
3
ansible/roles/base/tasks/main.yml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
# Grundsystem: APT-Quellen, Lokalisierung, Firmware, Hilfspakete
|
||||||
|
# TODO: implementieren — Skeleton-Datei
|
||||||
3
ansible/roles/desktop_kde/tasks/main.yml
Normal file
3
ansible/roles/desktop_kde/tasks/main.yml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
# KDE Plasma 6, SDDM, KDE-Anwendungen
|
||||||
|
# TODO: implementieren — Skeleton-Datei
|
||||||
3
ansible/roles/dev_tools/tasks/main.yml
Normal file
3
ansible/roles/dev_tools/tasks/main.yml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
# Git, Editor, Sprachen (Python/Node/Perl für FHEM)
|
||||||
|
# TODO: implementieren — Skeleton-Datei
|
||||||
3
ansible/roles/hardening/tasks/main.yml
Normal file
3
ansible/roles/hardening/tasks/main.yml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
# SSH-Hardening, UFW, unattended-upgrades, fail2ban
|
||||||
|
# TODO: implementieren — Skeleton-Datei
|
||||||
3
ansible/roles/workstation_apps/tasks/main.yml
Normal file
3
ansible/roles/workstation_apps/tasks/main.yml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
# Browser, Office, Multimedia-Codecs
|
||||||
|
# TODO: implementieren — Skeleton-Datei
|
||||||
10
ansible/site.yml
Normal file
10
ansible/site.yml
Normal 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
39
docs/distro-auswahl.md
Normal 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
|
||||||
Reference in New Issue
Block a user