wlan-firmware: bei absent nie Firmware entfernen, entfernte Pakete reparieren

KRITISCH (E2E 09.10.2026): der Server schickt fuer jedes Katalog-Merkmal
ausserhalb des Workspace "absent" (ADR-0010). Die Rolle machte daraus
apt remove linux-firmware - auf jedem Geraet, inkl. Kernel-Metapakete.
WLAN-Firmware weg, sichtbar erst nach dem naechsten Neustart (betroffen:
VM 107, Liebherr-35, MS Gaissach). Jetzt: absent entfernt nichts mehr;
Pakete, die ein frueherer remove-Lauf laut apt-Historie entfernt hat,
werden wieder installiert. Auf Liebherr-35 verifiziert (Firmware + Kernel-
Metapakete zurueck, iwlwifi laedt Firmware 89, WLAN verbunden).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
adminandClaude Opus 5.5 committed 2026-10-09 10:51:48 +02:00
1 parent 7d728faa03
commit 49b6f4536a
1 file changed
+34 -4
+34 -4
View File
@@ -32,11 +32,41 @@
mode: "0644"
when: tuxflotte_state == "present"
- name: Proprietäre WLAN-/Netzwerk-Firmware entfernen (Auftrag abgewählt)
# KRITISCHER Fund (E2E 09.10.2026): der Server schickt fuer jedes
# Katalog-Merkmal, das nicht im Workspace ist, "absent" (ADR-0010). Hier
# fuehrte das zu "apt remove linux-firmware" auf JEDEM Geraet - inklusive
# der Kernel-Metapakete (linux-generic-hwe-*), die davon abhaengen. Die
# WLAN-Firmware war danach weg, sichtbar erst nach dem naechsten Neustart
# (der Treiber hatte sie beim Booten schon geladen). Firmware gehoert zum
# Grundsystem und wird deshalb bei "absent" NIE entfernt.
#
# Reparatur fuer betroffene Geraete: genau die Pakete wieder installieren,
# die der fruehere "remove linux-firmware"-Lauf laut apt-Historie entfernt
# hat (Firmware + Kernel-Metapakete). Laeuft in beiden Zustaenden.
- name: Find packages removed by an earlier firmware removal (apt history)
ansible.builtin.shell: |
set -o pipefail
for f in /var/log/apt/history.log /var/log/apt/history.log.*; do
[ -e "$f" ] || continue
case "$f" in *.gz) zcat "$f" ;; *) cat "$f" ;; esac
done | awk '
/^Commandline: .* remove (linux-firmware|firmware-linux-nonfree)$/ { f = 1; next }
f && /^Remove: / { sub(/^Remove: /, ""); print; f = 0 }
/^End-Date/ { f = 0 }' |
sed 's/([^)]*)//g; s/,/\n/g' | sed 's/^ *//; s/ *$//; s/:[a-z0-9]*$//' | grep -v '^$' | sort -u
args:
executable: /bin/bash
register: tuxflotte_firmware_entfernt
changed_when: false
failed_when: false
- name: Reinstall firmware and kernel packages removed earlier (Reparatur)
ansible.builtin.apt:
name: "{{ tuxflotte_firmware_paket }}"
state: absent
when: tuxflotte_state == "absent"
name: "{{ tuxflotte_firmware_entfernt.stdout_lines }}"
state: present
update_cache: true
cache_valid_time: 3600
when: tuxflotte_firmware_entfernt.stdout_lines | length > 0
- name: wlan-firmware-Marker entfernen (Auftrag abgewählt)
ansible.builtin.file: