Enable usage of FQDNs for the endpoints

The endpoint map has the capability of using the cloud's name for the
endpoint. This is broken, however, since this has the problem that we
only take into account the overcloud's external endpoint name, which
we then cannot use if we have network-isolation enabled, which is
the most common use-case for real deployments.

So this change proposes the following:
* The external endpoint is still CloudName.
* We can now set different (or the same if we want) names for the
  different VIPs of the network.
* Using CLOUDNAME for the endpoint map will get a name for the
  appropriate network.

bp tls-via-certmonger

Change-Id: I3e7144653f0a1d783d87e6f638304b297f718929
This commit is contained in:
Juan Antonio Osorio Robles 2016-08-17 15:05:41 +03:00
parent 1c8b5fa5d7
commit f9dadcafcf
3 changed files with 1074 additions and 267 deletions

View File

@ -30,9 +30,9 @@ import yaml
(IN_FILE, OUT_FILE) = ('endpoint_data.yaml', 'endpoint_map.yaml')
SUBST = (SUBST_IP_ADDRESS, SUBST_CLOUDNAME) = ('IP_ADDRESS', 'CLOUDNAME')
PARAMS = (PARAM_CLOUDNAME, PARAM_ENDPOINTMAP, PARAM_NETIPMAP,
PARAMS = (PARAM_CLOUD_ENDPOINTS, PARAM_ENDPOINTMAP, PARAM_NETIPMAP,
PARAM_SERVICENETMAP) = (
'CloudName', 'EndpointMap', 'NetIpMap', 'ServiceNetMap')
'CloudEndpoints', 'EndpointMap', 'NetIpMap', 'ServiceNetMap')
FIELDS = (F_PORT, F_PROTOCOL, F_HOST) = ('port', 'protocol', 'host')
ENDPOINT_TYPES = frozenset(['Internal', 'Public', 'Admin'])
@ -95,10 +95,11 @@ def template_parameters(config):
'via parameter_defaults in the '
'resource registry.')
params[PARAM_CLOUDNAME] = make_parameter('string',
'overcloud',
'The DNS name of this cloud. '
'e.g. ci-overcloud.tripleo.org')
params[PARAM_CLOUD_ENDPOINTS] = make_parameter(
'json',
{},
('A map containing the DNS names for the different endpoints '
'(external, internal_api, etc.)'))
return params
@ -124,7 +125,10 @@ def template_output_definition(endpoint_name,
['NetIpMap',
{'get_param': ['ServiceNetMap',
net_param]}]},
SUBST_CLOUDNAME: {'get_param': PARAM_CLOUDNAME},
SUBST_CLOUDNAME: {'get_param':
[PARAM_CLOUD_ENDPOINTS,
{'get_param': ['ServiceNetMap',
net_param]}]},
})
])
}
@ -139,7 +143,10 @@ def template_output_definition(endpoint_name,
'params': {'NETWORK':
{'get_param': ['ServiceNetMap',
net_param]}}}}]},
SUBST_CLOUDNAME: {'get_param': PARAM_CLOUDNAME},
SUBST_CLOUDNAME: {'get_param':
[PARAM_CLOUD_ENDPOINTS,
{'get_param': ['ServiceNetMap',
net_param]}]},
})
])
}

File diff suppressed because it is too large Load Diff

View File

@ -16,6 +16,30 @@ parameters:
default: overcloud
description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
type: string
CloudNameInternal:
default: overcloud.internalapi.localdomain
description: >
The DNS name of this cloud's internal API endpoint. E.g.
'ci-overcloud.internalapi.tripleo.org'.
type: string
CloudNameStorage:
default: overcloud.storage.localdomain
description: >
The DNS name of this cloud's storage endpoint. E.g.
'ci-overcloud.storage.tripleo.org'.
type: string
CloudNameStorageManagement:
default: overcloud.storagemgmt.localdomain
description: >
The DNS name of this cloud's storage management endpoint. E.g.
'ci-overcloud.storagemgmt.tripleo.org'.
type: string
CloudNameManagement:
default: overcloud.management.localdomain
description: >
The DNS name of this cloud's storage management endpoint. E.g.
'ci-overcloud.management.tripleo.org'.
type: string
ControlFixedIPs:
default: []
description: Should be used for arbitrary ips.
@ -374,7 +398,12 @@ resources:
EndpointMap:
type: OS::TripleO::EndpointMap
properties:
CloudName: {get_param: CloudName}
CloudEndpoints:
external: {get_param: CloudName}
internal_api: {get_param: CloudNameInternal}
storage: {get_param: CloudNameStorage}
storage_mgmt: {get_param: CloudNameStorageManagement}
management: {get_param: CloudNameManagement}
NetIpMap: {get_attr: [VipMap, net_ip_map]}
ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}