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>
76 lines
3.2 KiB
YAML
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"
|