Files
ansible-content-stabil/roles/wlan-firmware/tasks/main.yml
T
adminandClaude Opus 5.5 49b6f4536a 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>
2026-10-09 10:51:48 +02:00

76 lines
3.2 KiB
YAML

- 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"
# 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_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:
path: /run/tuxflotte/agent/applied/wlan-firmware.marker
state: absent
when: tuxflotte_state == "absent"