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
86 lines
3.4 KiB
YAML
86 lines
3.4 KiB
YAML
- name: Ensure marker directory exists
|
|
ansible.builtin.file:
|
|
path: /run/tuxflotte/agent/applied
|
|
state: directory
|
|
mode: "0755"
|
|
|
|
# Allgemeine Update-Taktung (nicht zu verwechseln mit der Rolle
|
|
# "security-updates", die als eigenständiges Härtungs-Merkmal NUR
|
|
# Security-Patches automatisiert - diese Rolle steuert die Taktung für
|
|
# ALLE Paketaktualisierungen). Nutzt denselben apt-Periodic-Mechanismus,
|
|
# aber eine ANDERE Datei (10periodic statt 20auto-upgrades), damit sich
|
|
# beide Rollen nicht gegenseitig überschreiben.
|
|
# tuxflotte_optionen.intervall: taeglich/woechentlich/monatlich/manuell
|
|
# (Default woechentlich) - "manuell" deaktiviert die automatische
|
|
# Aktualisierung komplett (Tage=0), App-Auswahl/Zeitpunkt bleibt beim
|
|
# Nutzer.
|
|
#
|
|
# App-Update (Flatpak): flatpak selbst bringt keinen automatischen
|
|
# Hintergrund-Update-Mechanismus mit (anders als apt) - ein eigener
|
|
# systemd-Timer mit derselben Taktung übernimmt das hier mit, falls
|
|
# Flatpak auf dem Gerät installiert ist (mehrere App-Store-Merkmale nutzen
|
|
# es, siehe brave/gdevelop/turbowarp).
|
|
|
|
- name: Taktung in Tagen aus der Option ableiten
|
|
ansible.builtin.set_fact:
|
|
tuxflotte_update_tage: >-
|
|
{{
|
|
{'taeglich': 1, 'woechentlich': 7, 'monatlich': 30, 'manuell': 0}[
|
|
tuxflotte_optionen.intervall | default('woechentlich')
|
|
]
|
|
}}
|
|
|
|
- name: apt-Periodic-Taktung setzen
|
|
ansible.builtin.copy:
|
|
dest: /etc/apt/apt.conf.d/10periodic
|
|
content: |
|
|
APT::Periodic::Update-Package-Lists "{{ tuxflotte_update_tage }}";
|
|
APT::Periodic::Download-Upgradeable-Packages "{{ tuxflotte_update_tage }}";
|
|
APT::Periodic::AutocleanInterval "{{ tuxflotte_update_tage }}";
|
|
mode: "0644"
|
|
when: tuxflotte_state == "present"
|
|
|
|
- name: Prüfen, ob Flatpak installiert ist
|
|
ansible.builtin.stat:
|
|
path: /usr/bin/flatpak
|
|
register: tuxflotte_flatpak_binary
|
|
when: tuxflotte_state == "present"
|
|
|
|
- name: Flatpak-Auto-Update-Timer einrichten (falls Flatpak vorhanden)
|
|
ansible.builtin.cron:
|
|
name: "tuxflotte-flatpak-auto-update"
|
|
special_time: "{{ 'daily' if (tuxflotte_update_tage | int) == 1 else 'weekly' if (tuxflotte_update_tage | int) == 7 else 'monthly' }}"
|
|
job: "/usr/bin/flatpak update --noninteractive"
|
|
when: tuxflotte_state == "present" and tuxflotte_flatpak_binary.stat.exists and (tuxflotte_update_tage | int) > 0
|
|
|
|
- name: Flatpak-Auto-Update-Timer entfernen (falls "manuell" gewählt)
|
|
ansible.builtin.cron:
|
|
name: "tuxflotte-flatpak-auto-update"
|
|
state: absent
|
|
when: tuxflotte_state == "present" and (tuxflotte_update_tage | int) == 0
|
|
|
|
- name: Record that the auto-update role ran
|
|
ansible.builtin.copy:
|
|
dest: /run/tuxflotte/agent/applied/auto-update.marker
|
|
content: "{{ ansible_date_time.iso8601 }}: {{ tuxflotte_optionen.intervall | default('woechentlich') }}\n"
|
|
mode: "0644"
|
|
when: tuxflotte_state == "present"
|
|
|
|
- name: apt-Periodic-Taktung entfernen (Auftrag abgewählt)
|
|
ansible.builtin.file:
|
|
path: /etc/apt/apt.conf.d/10periodic
|
|
state: absent
|
|
when: tuxflotte_state == "absent"
|
|
|
|
- name: Flatpak-Auto-Update-Timer entfernen (Auftrag abgewählt)
|
|
ansible.builtin.cron:
|
|
name: "tuxflotte-flatpak-auto-update"
|
|
state: absent
|
|
when: tuxflotte_state == "absent"
|
|
|
|
- name: auto-update-Marker entfernen (Auftrag abgewählt)
|
|
ansible.builtin.file:
|
|
path: /run/tuxflotte/agent/applied/auto-update.marker
|
|
state: absent
|
|
when: tuxflotte_state == "absent"
|