diff --git a/templates/master/00-master/baremetal/files/NetworkManager-resolv-prepender.yaml b/templates/common/baremetal/files/NetworkManager-resolv-prepender.yaml similarity index 91% rename from templates/master/00-master/baremetal/files/NetworkManager-resolv-prepender.yaml rename to templates/common/baremetal/files/NetworkManager-resolv-prepender.yaml index 9bdd8c8822..e2946adc78 100644 --- a/templates/master/00-master/baremetal/files/NetworkManager-resolv-prepender.yaml +++ b/templates/common/baremetal/files/NetworkManager-resolv-prepender.yaml @@ -4,6 +4,7 @@ path: "/etc/NetworkManager/dispatcher.d/30-resolv-prepender" contents: inline: | #!/bin/bash + set -eo pipefail IFACE=$1 STATUS=$2 # If $DHCP6_FQDN_FQDN is not empty and is not localhost.localdomain @@ -20,18 +21,18 @@ contents: "{{.Infra.Status.PlatformStatus.BareMetal.APIServerInternalIP}}" \ "{{.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 -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 + /var/run/NetworkManager/resolv.conf > /etc/resolv.tmp 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 + cp /var/run/NetworkManager/resolv.conf /etc/resolv.tmp fi # Only leave the first 3 nameservers in /etc/resolv.conf - sed -i ':a $!{N; ba}; s/\(^\|\n\)nameserver/\n# nameserver/4g' /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/master/00-master/openstack/files/NetworkManager-resolv-prepender.yaml b/templates/master/00-master/openstack/files/NetworkManager-resolv-prepender.yaml index a83ab14017..5bda97d340 100644 --- a/templates/master/00-master/openstack/files/NetworkManager-resolv-prepender.yaml +++ b/templates/master/00-master/openstack/files/NetworkManager-resolv-prepender.yaml @@ -4,6 +4,7 @@ path: "/etc/NetworkManager/dispatcher.d/30-resolv-prepender" contents: inline: | #!/bin/bash + set -eo pipefail IFACE=$1 STATUS=$2 case "$STATUS" in @@ -11,18 +12,18 @@ contents: logger -s "NM resolv-prepender triggered by ${1} ${2}." NAMESERVER_IP="{{.Infra.Status.PlatformStatus.OpenStack.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 -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.conf + /var/run/NetworkManager/resolv.conf > /etc/resolv.tmp 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 + cp /var/run/NetworkManager/resolv.conf /etc/resolv.tmp fi # Only leave the first 3 nameservers in /etc/resolv.conf - sed -i ':a $!{N; ba}; s/\(^\|\n\)nameserver/\n# nameserver/4g' /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/master/00-master/vsphere/files/NetworkManager-resolv-prepender.yaml b/templates/master/00-master/vsphere/files/NetworkManager-resolv-prepender.yaml index 4f7a781104..3bde32aa4f 100644 --- a/templates/master/00-master/vsphere/files/NetworkManager-resolv-prepender.yaml +++ b/templates/master/00-master/vsphere/files/NetworkManager-resolv-prepender.yaml @@ -8,6 +8,7 @@ contents: {{ if .Infra.Status.PlatformStatus.VSphere -}} {{ if .Infra.Status.PlatformStatus.VSphere.APIServerInternalIP -}} #!/bin/bash + set -eo pipefail IFACE=$1 STATUS=$2 # If $DHCP6_FQDN_FQDN is not empty and is not localhost.localdomain @@ -19,16 +20,16 @@ contents: "{{.Infra.Status.PlatformStatus.VSphere.APIServerInternalIP}}" \ "{{.Infra.Status.PlatformStatus.VSphere.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 -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 + /var/run/NetworkManager/resolv.conf > /etc/resolv.tmp 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 + cp /var/run/NetworkManager/resolv.conf /etc/resolv.tmp fi + mv -f /etc/resolv.tmp /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 deleted file mode 100644 index fe8e5175fb..0000000000 --- a/templates/worker/00-worker/baremetal/files/NetworkManager-resolv-prepender.yaml +++ /dev/null @@ -1,38 +0,0 @@ -filesystem: "root" -mode: 0755 -path: "/etc/NetworkManager/dispatcher.d/30-resolv-prepender" -contents: - inline: | - #!/bin/bash - IFACE=$1 - STATUS=$2 - # If $DHCP6_FQDN_FQDN is not empty and is not localhost.localdomain - [[ -n "$DHCP6_FQDN_FQDN" && "$DHCP6_FQDN_FQDN" != "localhost.localdomain" && "$DHCP6_FQDN_FQDN" =~ "." ]] && hostnamectl set-hostname --static --transient $DHCP6_FQDN_FQDN - case "$STATUS" in - up|down|dhcp4-change|dhcp6-change) - logger -s "NM resolv-prepender triggered by ${1} ${2}." - NAMESERVER_IP=$(/usr/bin/podman run --rm \ - --authfile /var/lib/kubelet/config.json \ - --net=host \ - {{ .Images.baremetalRuntimeCfgImage }} \ - node-ip \ - show \ - "{{.Infra.Status.PlatformStatus.BareMetal.APIServerInternalIP}}" \ - "{{.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 -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 - fi - # Only leave the first 3 nameservers in /etc/resolv.conf - sed -i ':a $!{N; ba}; s/\(^\|\n\)nameserver/\n# nameserver/4g' /etc/resolv.conf - ;; - *) - ;; - esac diff --git a/templates/worker/00-worker/openstack/files/NetworkManager-resolv-prepender.yaml b/templates/worker/00-worker/openstack/files/NetworkManager-resolv-prepender.yaml index ff2ccdad49..51c7f1e0c4 100644 --- a/templates/worker/00-worker/openstack/files/NetworkManager-resolv-prepender.yaml +++ b/templates/worker/00-worker/openstack/files/NetworkManager-resolv-prepender.yaml @@ -19,18 +19,18 @@ contents: "{{.Infra.Status.PlatformStatus.OpenStack.NodeDNSIP}}" \ "{{.Infra.Status.PlatformStatus.OpenStack.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 -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.conf + /var/run/NetworkManager/resolv.conf > /etc/resolv.tmp else logger -s "Couldn't find a non-virtual IP, just updating resolv.conf" - cp /var/run/NetworkManager/resolv.conf /etc/resolv.conf + cp /var/run/NetworkManager/resolv.conf /etc/resolv.tmp fi # Only leave the first 3 nameservers in /etc/resolv.conf - sed -i ':a $!{N; ba}; s/\(^\|\n\)nameserver/\n# nameserver/4g' /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/worker/00-worker/vsphere/files/NetworkManager-resolv-prepender.yaml b/templates/worker/00-worker/vsphere/files/NetworkManager-resolv-prepender.yaml index ac2b1ba5e1..24d149f16f 100644 --- a/templates/worker/00-worker/vsphere/files/NetworkManager-resolv-prepender.yaml +++ b/templates/worker/00-worker/vsphere/files/NetworkManager-resolv-prepender.yaml @@ -19,16 +19,16 @@ contents: "{{.Infra.Status.PlatformStatus.VSphere.APIServerInternalIP}}" \ "{{.Infra.Status.PlatformStatus.VSphere.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 -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 + /var/run/NetworkManager/resolv.conf > /etc/resolv.tmp else logger -s "Couldn't find a non-virtual IP, just updating resolv.conf" - cp /var/run/NetworkManager/resolv.conf /etc/resolv.conf + cp /var/run/NetworkManager/resolv.conf /etc/resolv.tmp fi + mv -f /etc/resolv.tmp /etc/resolv.conf ;; *) ;;