From 56f389a9f386767fa347732890889033d4e2c91d Mon Sep 17 00:00:00 2001 From: Kenichi Omichi Date: Fri, 26 Jun 2020 00:03:47 -0700 Subject: [PATCH] Add USE_REAL_HOSTNAME to inventory.py (#6293) inventory_builder creates hosts.yaml file with hostnames like "node1", "node2", etc. Even if specifying override_system_hostname=false, the output of "kubectl get nodes" shows those hostnames ("node1", etc.) without using actual hostnames. To solve this issue, this adds an option USE_REAL_HOSTNAME to get actual hostnames when creating hosts.yaml file instead of "node1", etc. --- contrib/inventory_builder/inventory.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/contrib/inventory_builder/inventory.py b/contrib/inventory_builder/inventory.py index 2cd2494af..95d5eac0b 100644 --- a/contrib/inventory_builder/inventory.py +++ b/contrib/inventory_builder/inventory.py @@ -41,6 +41,7 @@ from ruamel.yaml import YAML import os import re +import subprocess import sys ROLES = ['all', 'kube-master', 'kube-node', 'etcd', 'k8s-cluster', @@ -69,6 +70,7 @@ MASSIVE_SCALE_THRESHOLD = int(os.environ.get("SCALE_THRESHOLD", 200)) DEBUG = get_var_as_bool("DEBUG", True) HOST_PREFIX = os.environ.get("HOST_PREFIX", "node") +USE_REAL_HOSTNAME = get_var_as_bool("USE_REAL_HOSTNAME", False) # Configurable as shell vars end @@ -167,6 +169,7 @@ class KubesprayInventory(object): # FIXME(mattymo): Fix condition where delete then add reuses highest id next_host_id = highest_host_id + 1 + next_host = "" all_hosts = existing_hosts.copy() for host in changed_hosts: @@ -191,8 +194,14 @@ class KubesprayInventory(object): self.debug("Skipping existing host {0}.".format(ip)) continue - next_host = "{0}{1}".format(HOST_PREFIX, next_host_id) - next_host_id += 1 + if USE_REAL_HOSTNAME: + cmd = ("ssh -oStrictHostKeyChecking=no " + + access_ip + " 'hostname -s'") + next_host = subprocess.check_output(cmd, shell=True) + next_host = next_host.strip().decode('ascii') + else: + next_host = "{0}{1}".format(HOST_PREFIX, next_host_id) + next_host_id += 1 all_hosts[next_host] = {'ansible_host': access_ip, 'ip': ip, 'access_ip': access_ip}