Browse Source

Allow using server names in openstack dynamic inv

When deploying on OpenStack with internal DNS configured, this will set
`openshift_hostname` to the Nova server name instead of its IP address.

Without those two matching, the OpenStack cloud provider configuration
will fail and the OpenShift nodes will not start.
Tomas Sedovic 7 years ago
parent
commit
c35c8f3e83

+ 4 - 2
playbooks/openstack/sample-inventory/inventory.py

@@ -89,13 +89,15 @@ def build_inventory():
         # TODO(shadower): what about multiple networks?
         if server.private_v4:
             hostvars['private_v4'] = server.private_v4
+            hostvars['openshift_ip'] = server.private_v4
+
             # NOTE(shadower): Yes, we set both hostname and IP to the private
             # IP address for each node. OpenStack doesn't resolve nodes by
             # name at all, so using a hostname here would require an internal
             # DNS which would complicate the setup and potentially introduce
             # performance issues.
-            hostvars['openshift_ip'] = server.private_v4
-            hostvars['openshift_hostname'] = server.private_v4
+            hostvars['openshift_hostname'] = server.metadata.get(
+                'openshift_hostname', server.private_v4)
         hostvars['openshift_public_hostname'] = server.name
 
         if server.metadata['host-type'] == 'cns':

+ 3 - 0
roles/openshift_openstack/templates/heat_stack_server.yaml.j2

@@ -212,6 +212,9 @@ resources:
         host-type: { get_param: type }
         sub-host-type:    { get_param: subtype }
         node_labels: { get_param: node_labels }
+{% if openshift_openstack_dns_nameservers %}
+        openshift_hostname: { get_param: name }
+{% endif %}
       scheduler_hints: { get_param: scheduler_hints }
 
 {% if use_trunk_ports|default(false)|bool %}