--- # 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'