add extrepo.yml: Workaround für einen ifupdown-Paketbug.

This commit is contained in:
2026-08-28 17:21:44 +02:00
parent b50f65ed14
commit 11eee62a3c
2 changed files with 90 additions and 0 deletions
@@ -0,0 +1,75 @@
---
# Workaround für einen ifupdown-Paketbug: /etc/network/if-up.d/resolved verwendet
# "return" auf oberster Ebene, was unter dash/bash fehlschlägt, wenn das Skript
# von run-parts direkt ausgeführt (nicht gesourced) wird. Das lässt "ifup"/
# "systemctl restart networking" abbrechen, bevor Interfaces konfiguriert werden.
#
# Betroffen nur, wenn:
# - das Paket ifupdown installiert ist, UND
# - die Datei /etc/network/if-up.d/resolved existiert (d.h. systemd-resolved-
# Integration von ifupdown vorhanden)
- name: ifupdown resolved-Hook prüfen und ggf. patchen (return-Bug)
tags:
- fix-ifupdown-resolved-hook
block:
- name: Paketfakten einlesen (für ifupdown-Check)
ansible.builtin.package_facts:
manager: apt
- name: Vorhandensein von /etc/network/if-up.d/resolved prüfen
ansible.builtin.stat:
path: /etc/network/if-up.d/resolved
register: _ifupdown_resolved_hook
# Benötigt das Ansible-Modul community.general.dpkg_divert aus der
# Collection "community.general" (nicht Teil von ansible-core). Da es bei
# euch keine requirements.yml gibt, muss die Collection einmalig manuell
# auf der Ansible-Control-Node installiert werden:
#
# ansible-galaxy collection install community.general
#
# Kontrolle, ob/welche Version bereits vorhanden ist:
#
# ansible-galaxy collection list community.general
#
# Empfehlung: Sobald eine requirements.yml existiert, dort ergänzen:
#
# collections:
# - name: community.general
#
# und künftig per "ansible-galaxy collection install -r requirements.yml"
# installieren/aktualisieren, statt manuell.
- name: ifupdown resolved-Hook divertieren und patchen
when:
- "'ifupdown' in ansible_facts.packages"
- _ifupdown_resolved_hook.stat.exists
block:
- name: Originaldatei divertieren (dpkg-divert --rename --add)
community.general.dpkg_divert:
path: /etc/network/if-up.d/resolved
state: present
rename: true
register: _resolved_hook_divert
- name: Divertierte Version an Originalpfad kopieren (nur beim ersten Lauf)
ansible.builtin.copy:
src: /etc/network/if-up.d/resolved.distrib
dest: /etc/network/if-up.d/resolved
remote_src: true
force: false
owner: root
group: root
mode: "0755"
- name: "Bugfix: return -> exit 0 (Fall 'interface leer')"
ansible.builtin.replace:
path: /etc/network/if-up.d/resolved
regexp: '(if \[ ! "\$interface" \]; then\n\s*)return(\n\s*fi)'
replace: '\1exit 0\2'
- name: "Bugfix: return -> exit 0 (Fall 'interface = lo')"
ansible.builtin.replace:
path: /etc/network/if-up.d/resolved
regexp: '(if \[ "\$interface" = "lo" \]; then\n\s*)return(\n\s*fi)'
replace: '\1exit 0\2'