-
Notifications
You must be signed in to change notification settings - Fork 413
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1738 from openshift-cherrypick-robot/cherry-pick-…
…1711-to-release-4.3 Bug 1837124: templates: add etc-networkmanager-dispatcher.d-90-long-hostname.yaml
- Loading branch information
Showing
1 changed file
with
40 additions
and
0 deletions.
There are no files selected for viewing
40 changes: 40 additions & 0 deletions
40
templates/common/_base/files/etc-networkmanager-dispatcher.d-90-long-hostname.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
filesystem: "root" | ||
mode: 0755 | ||
path: "/etc/NetworkManager/dispatcher.d/90-long-hostname" | ||
contents: | ||
inline: | | ||
#!/bin/bash | ||
# | ||
# On Google Compute Platform (GCP) the hostname may be too long (>63 chars). | ||
# During firstboot the hostname is set in the initramfs before NetworkManager | ||
# runs; on reboot affect nodes use 'localhost'. This hook is a simple work | ||
# around: if the host name is longer than 63 characters, then the hostname | ||
# is truncated at the _first_ dot. | ||
# | ||
# Additionally, this hook does not break DNS or cluster DNS resolution, | ||
# since NetworkManager sets the appropriate /etc/resolv.conf settings. | ||
IF=$1 | ||
STATUS=$2 | ||
log() { logger --tag "network-manager/$(basename $0)" "${@}"; } | ||
# capture all eligible hostnames | ||
if [[ ! "$(/bin/hostname)" =~ (localhost|localhost.local) ]]; then | ||
log "hostname is already set" | ||
exit 0 | ||
fi | ||
if [[ ! "$STATUS" =~ (up|hostname|dhcp4-change|dhcp6-change) ]]; then | ||
exit 0 | ||
fi | ||
default_host="${DHCP4_HOST_NAME:-$DHCP6_HOST_NAME}" | ||
# truncate the hostname to the first dot and than 64 characters. | ||
host=$(echo ${default_host} | cut -f1 -d'.' | cut -c -63) | ||
if [ "${#default_host}" -gt 63 ]; then | ||
log "discovered hostname is longer than than 63 characters" | ||
log "truncating ${default_host} => ${host}" | ||
/bin/hostnamectl --transient set-hostname "${host}" | ||
fi |