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.
This commit is contained in:
parent
45e12df8a3
commit
56f389a9f3
1 changed files with 11 additions and 2 deletions
|
@ -41,6 +41,7 @@ from ruamel.yaml import YAML
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
ROLES = ['all', 'kube-master', 'kube-node', 'etcd', 'k8s-cluster',
|
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)
|
DEBUG = get_var_as_bool("DEBUG", True)
|
||||||
HOST_PREFIX = os.environ.get("HOST_PREFIX", "node")
|
HOST_PREFIX = os.environ.get("HOST_PREFIX", "node")
|
||||||
|
USE_REAL_HOSTNAME = get_var_as_bool("USE_REAL_HOSTNAME", False)
|
||||||
|
|
||||||
# Configurable as shell vars end
|
# Configurable as shell vars end
|
||||||
|
|
||||||
|
@ -167,6 +169,7 @@ class KubesprayInventory(object):
|
||||||
|
|
||||||
# FIXME(mattymo): Fix condition where delete then add reuses highest id
|
# FIXME(mattymo): Fix condition where delete then add reuses highest id
|
||||||
next_host_id = highest_host_id + 1
|
next_host_id = highest_host_id + 1
|
||||||
|
next_host = ""
|
||||||
|
|
||||||
all_hosts = existing_hosts.copy()
|
all_hosts = existing_hosts.copy()
|
||||||
for host in changed_hosts:
|
for host in changed_hosts:
|
||||||
|
@ -191,6 +194,12 @@ class KubesprayInventory(object):
|
||||||
self.debug("Skipping existing host {0}.".format(ip))
|
self.debug("Skipping existing host {0}.".format(ip))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
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 = "{0}{1}".format(HOST_PREFIX, next_host_id)
|
||||||
next_host_id += 1
|
next_host_id += 1
|
||||||
all_hosts[next_host] = {'ansible_host': access_ip,
|
all_hosts[next_host] = {'ansible_host': access_ip,
|
||||||
|
|
Loading…
Reference in a new issue