76 lines
2.9 KiB
YAML
76 lines
2.9 KiB
YAML
---
|
|
# 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'
|