Files
ansible-content-stabil/roles/tastaturlayout/tasks/main.yml
T
adminandClaude Sonnet 5 553117466b 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
2026-09-10 09:07:37 +02:00

52 lines
2.1 KiB
YAML

- name: Ensure marker directory exists
ansible.builtin.file:
path: /run/tuxflotte/agent/applied
state: directory
mode: "0755"
# Systemweites Standard-Tastaturlayout (Konsole + neue Login-Sitzungen) -
# reine Konfigurationsdatei, kein Paket noetig (console-setup/keyboard-
# configuration sind bereits Teil jedes Debian-Familie-Basissystems).
# tuxflotte_optionen.layout: "de" oder "us" (Default "de", siehe defaults/
# main.yml) - opake Option analog zum Brave-Standardbrowser-Muster.
- name: XKBLAYOUT in /etc/default/keyboard setzen
ansible.builtin.lineinfile:
path: /etc/default/keyboard
regexp: '^XKBLAYOUT='
line: 'XKBLAYOUT="{{ tuxflotte_optionen.layout | default("de") }}"'
when: tuxflotte_state == "present"
register: tuxflotte_keyboard_changed
- name: Layout-Änderung anwenden
ansible.builtin.command: dpkg-reconfigure -f noninteractive keyboard-configuration
when: tuxflotte_state == "present" and tuxflotte_keyboard_changed.changed
- name: Record that the tastaturlayout role ran
ansible.builtin.copy:
dest: /run/tuxflotte/agent/applied/tastaturlayout.marker
content: "{{ ansible_date_time.iso8601 }}: {{ tuxflotte_optionen.layout | default('de') }}\n"
mode: "0644"
when: tuxflotte_state == "present"
# "Abwählen" bedeutet hier: zurück auf den Tuxflotte-Standard (de), nicht
# ein undefiniertes Layout - anders als bei installierbaren Apps gibt es
# hier kein sinnvolles "gar kein Layout".
- name: Auf Standard-Layout (de) zurücksetzen (Auftrag abgewählt)
ansible.builtin.lineinfile:
path: /etc/default/keyboard
regexp: '^XKBLAYOUT='
line: 'XKBLAYOUT="de"'
when: tuxflotte_state == "absent"
register: tuxflotte_keyboard_reset
- name: Standard-Layout anwenden (Auftrag abgewählt)
ansible.builtin.command: dpkg-reconfigure -f noninteractive keyboard-configuration
when: tuxflotte_state == "absent" and tuxflotte_keyboard_reset.changed
- name: tastaturlayout-Marker entfernen (Auftrag abgewählt)
ansible.builtin.file:
path: /run/tuxflotte/agent/applied/tastaturlayout.marker
state: absent
when: tuxflotte_state == "absent"