42 lines
1.5 KiB
Bash
42 lines
1.5 KiB
Bash
|
#!/bin/bash
|
||
|
#
|
||
|
# Excerpted from https://github.com/containers/automation_images/blob/main/systemd_banish.sh
|
||
|
#
|
||
|
# Early 2023: https://github.com/containers/podman/issues/16973
|
||
|
#
|
||
|
# We see countless instances of "lookup cdn03.quay.io" flakes.
|
||
|
# Disabling the systemd resolver has completely resolved those,
|
||
|
# from multiple flakes per day to zero in a month.
|
||
|
#
|
||
|
# Opinions differ on the merits of systemd-resolve, but the fact is
|
||
|
# it breaks our CI testing. Kill it.
|
||
|
nsswitch=/etc/authselect/nsswitch.conf
|
||
|
if [[ -e $nsswitch ]]; then
|
||
|
if grep -q -E 'hosts:.*resolve' $nsswitch; then
|
||
|
echo "Disabling systemd-resolved"
|
||
|
sed -i -e 's/^\(hosts: *\).*/\1files dns myhostname/' $nsswitch
|
||
|
systemctl disable --now systemd-resolved
|
||
|
rm -f /etc/resolv.conf
|
||
|
|
||
|
# NetworkManager may already be running, or it may not....
|
||
|
systemctl start NetworkManager
|
||
|
sleep 1
|
||
|
systemctl restart NetworkManager
|
||
|
|
||
|
# ...and it may create resolv.conf upon start/restart, or it
|
||
|
# may not. Keep restarting until it does. (Yes, I realize
|
||
|
# this is cargocult thinking. Don't care. Not worth the effort
|
||
|
# to diagnose and solve properly.)
|
||
|
retries=10
|
||
|
while ! test -e /etc/resolv.conf;do
|
||
|
retries=$((retries - 1))
|
||
|
if [[ $retries -eq 0 ]]; then
|
||
|
echo "Timed out waiting for resolv.conf" >&2
|
||
|
echo "...gonna try continuing. Expect failures." >&2
|
||
|
fi
|
||
|
systemctl restart NetworkManager
|
||
|
sleep 5
|
||
|
done
|
||
|
fi
|
||
|
fi
|