Phase 2: 10 neue Konfiguration/Härtung-Merkmale (erste Batch)

Konfiguration: multimedia-codecs, barrierefreiheit, wlan-firmware,
tastaturlayout, laender, zeitserver, auto-update.
Härtung: firewall, virenscanner, security-updates.

Vier Config-Value-Rollen (tastaturlayout/laender/zeitserver/auto-update)
nutzen tuxflotte_optionen fuer den eigentlichen Wert (Muster wie
brave/standardbrowser), nicht nur present/absent.

ECHT auf golden-linux-mint getestet (ansible-core dort, Live-VM ueber
SSH), nicht nur Syntax-Check - dabei drei reale Bugs gefunden+behoben:

1. wlan-firmware: Paketname ist NICHT distributionsunabhaengig wie
   angenommen - Debian "firmware-linux-nonfree", Ubuntu/Mint
   "linux-firmware". Per ansible_facts[distribution] verzweigt (dabei
   zusaetzlich gelernt: Mint meldet sich als "Linux Mint" mit
   Leerzeichen, nicht "Linuxmint").
2. auto-update: Jinja-Dict-Lookup in set_fact lieferte einen String
   statt int zurueck, dadurch spaeterer Vergleich mit TypeError
   abgestuerzt UND zwei stille Gleichheitsvergleiche immer falsch
   (waeren nie aufgefallen ohne den einen lauten Fehler an anderer
   Stelle). Mit explizitem int-Filter behoben.
3. firewall/security-updates: Auftrag-abgewaehlt deaktivierte nur die
   Funktion (ufw disable / Config-Datei loeschen), liess aber das Paket
   installiert - inkonsistent zum Rest des Katalogs, wo absent immer
   vollstaendige Rueckabwicklung bedeutet. Ergaenzt.

Nebenbefund beim Testen: clamav-daemon startet bewusst nicht sofort nach
der Installation (echte systemd-Condition auf die noch fehlende
Signaturdatenbank) - kein Bug, aber clamav-freshclam war standardmaessig
nicht dauerhaft aktiviert, das nachgezogen.

Firewall-Rolle laesst SSH bewusst offen (sonst waere Fernwartung
ausgesperrt - fast selbst beim Testen passiert). Bekannte offene Luecke
klar kommentiert: andere Merkmale mit Eingehend-Bedarf (z.B. veyon)
muessen ihre eigene ufw-Freigabe mitbringen, diese Rolle kennt andere
Merkmale nicht (Konflikt-/Gruppen-Handling insgesamt noch offen, siehe
Roadmap).

Gehoert zusammen mit admin/provisioning-server-Migration 0035 (live auf
anode angewendet+verifiziert: 10 Merkmale, 30 Blueprint-Zeilen) und den
3 neuen Kategorien aus Migration 0034.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLk93dhDMrkPXefVdknMV9
This commit is contained in:
adminandClaude Sonnet 5 committed 2026-09-10 09:07:37 +02:00
1 parent e4edcf1011
commit 553117466b
21 files changed
+663

No files matched your search

+1
View File
@@ -0,0 +1 @@
tuxflotte_state: present
+45
View File
@@ -0,0 +1,45 @@
- name: Ensure marker directory exists
ansible.builtin.file:
path: /run/tuxflotte/agent/applied
state: directory
mode: "0755"
# Echter Fund beim Live-Test auf golden-linux-mint (10.09.2026): der
# Paketname ist NICHT distributionsunabhängig, anders als bei den meisten
# anderen Merkmalen dieser Batch - Debian nennt das Metapaket
# "firmware-linux-nonfree", Ubuntu/Mint dagegen "linux-firmware". Beide
# real per apt-cache/apt-cache-search auf ihrer jeweiligen Plattform
# verifiziert. Setzt voraus, dass die Golden-Images die passende
# apt-Komponente (non-free-firmware bei Debian) aktiviert haben - auf
# allen drei Referenz-VMs bereits der Fall.
- name: Paketname je Distribution bestimmen
ansible.builtin.set_fact:
tuxflotte_firmware_paket: "{{ 'linux-firmware' if ansible_facts['distribution'] in ['Ubuntu', 'Linux Mint'] else 'firmware-linux-nonfree' }}"
- name: Proprietäre WLAN-/Netzwerk-Firmware installieren
ansible.builtin.apt:
name: "{{ tuxflotte_firmware_paket }}"
state: present
update_cache: true
cache_valid_time: 3600
when: tuxflotte_state == "present"
- name: Record that the wlan-firmware role ran
ansible.builtin.copy:
dest: /run/tuxflotte/agent/applied/wlan-firmware.marker
content: "{{ ansible_date_time.iso8601 }}: {{ tuxflotte_firmware_paket }}\n"
mode: "0644"
when: tuxflotte_state == "present"
- name: Proprietäre WLAN-/Netzwerk-Firmware entfernen (Auftrag abgewählt)
ansible.builtin.apt:
name: "{{ tuxflotte_firmware_paket }}"
state: absent
when: tuxflotte_state == "absent"
- name: wlan-firmware-Marker entfernen (Auftrag abgewählt)
ansible.builtin.file:
path: /run/tuxflotte/agent/applied/wlan-firmware.marker
state: absent
when: tuxflotte_state == "absent"