diff --git a/templates/common/baremetal/files/NetworkManager-resolv-prepender.yaml b/templates/common/baremetal/files/NetworkManager-resolv-prepender.yaml index e4f4388427..e25c7cb760 100644 --- a/templates/common/baremetal/files/NetworkManager-resolv-prepender.yaml +++ b/templates/common/baremetal/files/NetworkManager-resolv-prepender.yaml @@ -51,14 +51,28 @@ contents: "{{.Infra.Status.PlatformStatus.BareMetal.IngressIP}}") DOMAIN="{{.Infra.Status.EtcdDiscoveryDomain}}" if [[ -n "$NAMESERVER_IP" ]]; then - >&2 echo "NM resolv-prepender: Prepending 'nameserver $NAMESERVER_IP' to /etc/resolv.conf (other nameservers from /var/run/NetworkManager/resolv.conf)" - sed -e "/^search/d" \ - -e "/Generated by/c# Generated by KNI resolv prepender NM dispatcher script\nsearch $DOMAIN\nnameserver $NAMESERVER_IP" \ - /var/run/NetworkManager/resolv.conf > /etc/resolv.tmp + if systemctl -q is-enabled systemd-resolved; then + >&2 echo "NM resolv-prepender: Setting up systemd-resolved for OKD domain and local IP" + if [[ ! -f /etc/systemd/resolved.conf.d/60-kni.conf ]]; then + >&2 echo "NM resolv-prepender: Creating /etc/systemd/resolved.conf.d/60-kni.conf" + echo "[Resolve]" > /etc/systemd/resolved.conf.d/60-kni.conf + echo "DNS=$NAMESERVER_IP" >> /etc/systemd/resolved.conf.d/60-kni.conf + echo "Domains=$DOMAIN" >> /etc/systemd/resolved.conf.d/60-kni.conf + if systemctl -q is-active systemd-resolved; then + >&2 echo "NM resolv-prepender: restarting systemd-resolved" + systemctl restart systemd-resolved + fi + fi + else + logger -s "NM resolv-prepender: Prepending 'nameserver $NAMESERVER_IP' to /etc/resolv.conf (other nameservers from /var/run/NetworkManager/resolv.conf)" + sed -e "/^search/d" \ + -e "/Generated by/c# Generated by KNI resolv prepender NM dispatcher script\nsearch $DOMAIN\nnameserver $NAMESERVER_IP" \ + /var/run/NetworkManager/resolv.conf > /etc/resolv.tmp + # Only leave the first 3 nameservers in /etc/resolv.conf + sed -i ':a $!{N; ba}; s/\(^\|\n\)nameserver/\n# nameserver/4g' /etc/resolv.tmp + mv -f /etc/resolv.tmp /etc/resolv.conf + fi fi - # Only leave the first 3 nameservers in /etc/resolv.conf - sed -i ':a $!{N; ba}; s/\(^\|\n\)nameserver/\n# nameserver/4g' /etc/resolv.tmp - mv -f /etc/resolv.tmp /etc/resolv.conf ;; *) ;; diff --git a/templates/common/openstack/files/NetworkManager-resolv-prepender.yaml b/templates/common/openstack/files/NetworkManager-resolv-prepender.yaml index c2ba092a86..ea74210971 100644 --- a/templates/common/openstack/files/NetworkManager-resolv-prepender.yaml +++ b/templates/common/openstack/files/NetworkManager-resolv-prepender.yaml @@ -38,14 +38,28 @@ contents: "{{.Infra.Status.PlatformStatus.OpenStack.IngressIP}}") DOMAIN="{{.Infra.Status.EtcdDiscoveryDomain}}" if [[ -n "$NAMESERVER_IP" ]]; then - logger -s "NM resolv-prepender: Prepending 'nameserver $NAMESERVER_IP' to /etc/resolv.conf (other nameservers from /var/run/NetworkManager/resolv.conf)" - sed -e "/^search/d" \ - -e "/Generated by/c# Generated by OpenStack resolv prepender NM dispatcher script\nsearch $DOMAIN\nnameserver $NAMESERVER_IP" \ - /var/run/NetworkManager/resolv.conf > /etc/resolv.tmp + if systemctl -q is-enabled systemd-resolved; then + >&2 echo "NM resolv-prepender: Setting up systemd-resolved for OKD domain and local IP" + if [[ ! -f /etc/systemd/resolved.conf.d/60-kni.conf ]]; then + >&2 echo "NM resolv-prepender: Creating /etc/systemd/resolved.conf.d/60-kni.conf" + echo "[Resolve]" > /etc/systemd/resolved.conf.d/60-kni.conf + echo "DNS=$NAMESERVER_IP" >> /etc/systemd/resolved.conf.d/60-kni.conf + echo "Domains=$DOMAIN" >> /etc/systemd/resolved.conf.d/60-kni.conf + if systemctl -q is-active systemd-resolved; then + >&2 echo "NM resolv-prepender: restarting systemd-resolved" + systemctl restart systemd-resolved + fi + fi + else + logger -s "NM resolv-prepender: Prepending 'nameserver $NAMESERVER_IP' to /etc/resolv.conf (other nameservers from /var/run/NetworkManager/resolv.conf)" + sed -e "/^search/d" \ + -e "/Generated by/c# Generated by OpenStack resolv prepender NM dispatcher script\nsearch $DOMAIN\nnameserver $NAMESERVER_IP" \ + /var/run/NetworkManager/resolv.conf > /etc/resolv.tmp + # Only leave the first 3 nameservers in /etc/resolv.conf + sed -i ':a $!{N; ba}; s/\(^\|\n\)nameserver/\n# nameserver/4g' /etc/resolv.tmp + mv -f /etc/resolv.tmp /etc/resolv.conf + fi fi - # Only leave the first 3 nameservers in /etc/resolv.conf - sed -i ':a $!{N; ba}; s/\(^\|\n\)nameserver/\n# nameserver/4g' /etc/resolv.tmp - mv -f /etc/resolv.tmp /etc/resolv.conf ;; *) ;; diff --git a/templates/common/ovirt/files/NetworkManager-resolv-prepender.yaml b/templates/common/ovirt/files/NetworkManager-resolv-prepender.yaml index da289128e3..e7bc2542b2 100644 --- a/templates/common/ovirt/files/NetworkManager-resolv-prepender.yaml +++ b/templates/common/ovirt/files/NetworkManager-resolv-prepender.yaml @@ -39,14 +39,28 @@ contents: "{{.Infra.Status.PlatformStatus.Ovirt.IngressIP}}") DOMAIN="{{.Infra.Status.EtcdDiscoveryDomain}}" if [[ -n "$NAMESERVER_IP" ]]; then - logger -s "NM resolv-prepender: Prepending 'nameserver $NAMESERVER_IP' to /etc/resolv.conf (other nameservers from /var/run/NetworkManager/resolv.conf)" - sed -e "/^search/d" \ - -e "/Generated by/c# Generated by Ovirt resolv prepender NM dispatcher script\nsearch $DOMAIN\nnameserver $NAMESERVER_IP" \ - /var/run/NetworkManager/resolv.conf > /etc/resolv.tmp + if systemctl -q is-enabled systemd-resolved; then + >&2 echo "NM resolv-prepender: Setting up systemd-resolved for OKD domain and local IP" + if [[ ! -f /etc/systemd/resolved.conf.d/60-kni.conf ]]; then + >&2 echo "NM resolv-prepender: Creating /etc/systemd/resolved.conf.d/60-kni.conf" + echo "[Resolve]" > /etc/systemd/resolved.conf.d/60-kni.conf + echo "DNS=$NAMESERVER_IP" >> /etc/systemd/resolved.conf.d/60-kni.conf + echo "Domains=$DOMAIN" >> /etc/systemd/resolved.conf.d/60-kni.conf + if systemctl -q is-active systemd-resolved; then + >&2 echo "NM resolv-prepender: restarting systemd-resolved" + systemctl restart systemd-resolved + fi + fi + else + logger -s "NM resolv-prepender: Prepending 'nameserver $NAMESERVER_IP' to /etc/resolv.conf (other nameservers from /var/run/NetworkManager/resolv.conf)" + sed -e "/^search/d" \ + -e "/Generated by/c# Generated by Ovirt resolv prepender NM dispatcher script\nsearch $DOMAIN\nnameserver $NAMESERVER_IP" \ + /var/run/NetworkManager/resolv.conf > /etc/resolv.tmp + # Only leave the first 3 nameservers in /etc/resolv.conf + sed -i ':a $!{N; ba}; s/\(^\|\n\)nameserver/\n# nameserver/4g' /etc/resolv.tmp + mv -f /etc/resolv.tmp /etc/resolv.conf + fi fi - # Only leave the first 3 nameservers in /etc/resolv.conf - sed -i ':a $!{N; ba}; s/\(^\|\n\)nameserver/\n# nameserver/4g' /etc/resolv.tmp - mv -f /etc/resolv.tmp /etc/resolv.conf ;; *) ;; diff --git a/templates/common/vsphere/files/NetworkManager-resolv-prepender.yaml b/templates/common/vsphere/files/NetworkManager-resolv-prepender.yaml index 7ecd2ba574..f50f697f0f 100644 --- a/templates/common/vsphere/files/NetworkManager-resolv-prepender.yaml +++ b/templates/common/vsphere/files/NetworkManager-resolv-prepender.yaml @@ -44,13 +44,28 @@ contents: "{{.Infra.Status.PlatformStatus.VSphere.APIServerInternalIP}}" \ "{{.Infra.Status.PlatformStatus.VSphere.IngressIP}}") DOMAIN="{{.Infra.Status.EtcdDiscoveryDomain}}" + if [[ -n "$NAMESERVER_IP" ]]; then - logger -s "NM resolv-prepender: Prepending 'nameserver $NAMESERVER_IP' to /etc/resolv.conf (other nameservers from /var/run/NetworkManager/resolv.conf)" - sed -e "/^search/d" \ - -e "/Generated by/c# Generated by KNI resolv prepender NM dispatcher script\nsearch $DOMAIN\nnameserver $NAMESERVER_IP" \ - /var/run/NetworkManager/resolv.conf > /etc/resolv.tmp + if systemctl -q is-enabled systemd-resolved; then + >&2 echo "NM resolv-prepender: Setting up systemd-resolved for OKD domain and local IP" + if [[ ! -f /etc/systemd/resolved.conf.d/60-kni.conf ]]; then + >&2 echo "NM resolv-prepender: Creating /etc/systemd/resolved.conf.d/60-kni.conf" + echo "[Resolve]" > /etc/systemd/resolved.conf.d/60-kni.conf + echo "DNS=$NAMESERVER_IP" >> /etc/systemd/resolved.conf.d/60-kni.conf + echo "Domains=$DOMAIN" >> /etc/systemd/resolved.conf.d/60-kni.conf + if systemctl -q is-active systemd-resolved; then + >&2 echo "NM resolv-prepender: restarting systemd-resolved" + systemctl restart systemd-resolved + fi + fi + else + logger -s "NM resolv-prepender: Prepending 'nameserver $NAMESERVER_IP' to /etc/resolv.conf (other nameservers from /var/run/NetworkManager/resolv.conf)" + sed -e "/^search/d" \ + -e "/Generated by/c# Generated by KNI resolv prepender NM dispatcher script\nsearch $DOMAIN\nnameserver $NAMESERVER_IP" \ + /var/run/NetworkManager/resolv.conf > /etc/resolv.tmp + mv -f /etc/resolv.tmp /etc/resolv.conf + fi fi - mv -f /etc/resolv.tmp /etc/resolv.conf ;; *) ;;