From a1071bf5b0ec4b97537838d6255eb7c05566c952 Mon Sep 17 00:00:00 2001 From: Antoni Segura Puimedon Date: Tue, 11 Feb 2020 13:23:37 +0100 Subject: [PATCH] baremetal: all resolvconf editing to NM dispatcher Before this patch, the search domain modification was dependant on dhclient. Unfortunately, the interaction of both components sometimes fails. This patch makes sure that we preserve what comes from the dhcp client (whichever may be) but we set what we need in VIP managing environments. Signed-off-by: Antoni Segura Puimedon --- .../baremetal/files/NetworkManager-resolv-prepender.yaml | 5 ++++- .../baremetal/files/NetworkManager-resolv-prepender.yaml | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/templates/master/00-master/baremetal/files/NetworkManager-resolv-prepender.yaml b/templates/master/00-master/baremetal/files/NetworkManager-resolv-prepender.yaml index 2b0cb3e1ff..063958c8fc 100644 --- a/templates/master/00-master/baremetal/files/NetworkManager-resolv-prepender.yaml +++ b/templates/master/00-master/baremetal/files/NetworkManager-resolv-prepender.yaml @@ -10,10 +10,13 @@ contents: up|down|dhcp4-change|dhcp6-change) logger -s "NM resolv-prepender triggered by ${1} ${2}." NAMESERVER_IP="{{.Infra.Status.PlatformStatus.BareMetal.NodeDNSIP}}" + DOMAIN="{{.EtcdDiscoveryDomain}}" set +e 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 "/^search .*$/a nameserver $NAMESERVER_IP" /var/run/NetworkManager/resolv.conf > /etc/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.conf else logger -s "NM resolv-prepender: Couldn't find a Virtual IP, just updating resolv.conf" cp /var/run/NetworkManager/resolv.conf /etc/resolv.conf diff --git a/templates/worker/00-worker/baremetal/files/NetworkManager-resolv-prepender.yaml b/templates/worker/00-worker/baremetal/files/NetworkManager-resolv-prepender.yaml index 22dd40e60d..b4673fa029 100644 --- a/templates/worker/00-worker/baremetal/files/NetworkManager-resolv-prepender.yaml +++ b/templates/worker/00-worker/baremetal/files/NetworkManager-resolv-prepender.yaml @@ -13,10 +13,13 @@ contents: "{{.Infra.Status.PlatformStatus.BareMetal.APIServerInternalIP}}" \ "{{.Infra.Status.PlatformStatus.BareMetal.NodeDNSIP}}" \ "{{.Infra.Status.PlatformStatus.BareMetal.IngressIP}}") + DOMAIN="{{.EtcdDiscoveryDomain}}" set +e 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 "/^search .*$/a nameserver $NAMESERVER_IP" /var/run/NetworkManager/resolv.conf > /etc/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.conf else logger -s "Couldn't find a non-virtual IP, just updating resolv.conf" cp /var/run/NetworkManager/resolv.conf /etc/resolv.conf