aboutsummaryrefslogtreecommitdiffstats
path: root/puppet
diff options
context:
space:
mode:
authorJuan Antonio Osorio Robles <jaosorior@redhat.com>2016-09-05 10:24:04 +0300
committerJuan Antonio Osorio Robles <jaosorior@redhat.com>2016-09-06 12:08:19 +0300
commit393c15550a7416486daaaf4584cda50ee99fd790 (patch)
tree01d50734a9605af143ee01a72ef555d5f65e9a79 /puppet
parent4488b0fdf809413cdd0e6deb92de879224cda383 (diff)
Add service networks to hieradata
This adds a mapping of which service is on which network. This information can be used to fetch a certificate depending on the network (since they use different hostnames). Change-Id: I176245da591bea28aeabf3d2b552f24456c98c43
Diffstat (limited to 'puppet')
-rw-r--r--puppet/all-nodes-config.yaml22
1 files changed, 22 insertions, 0 deletions
diff --git a/puppet/all-nodes-config.yaml b/puppet/all-nodes-config.yaml
index 7aa29b24..f499739a 100644
--- a/puppet/all-nodes-config.yaml
+++ b/puppet/all-nodes-config.yaml
@@ -77,6 +77,28 @@ resources:
for_each:
SERVICE:
str_split: [',', {get_param: enabled_services}]
+ # Dynamically generate per-service network data
+ # This works as follows (outer->inner functions)
+ # yaql - filters services where no mapping exists in ServiceNetMap
+ # map_replace: substitute e.g heat_api_network with network name from ServiceNetMap
+ # map_merge/repeat: generate a per-service mapping
+ - yaql:
+ # This filters any entries where the value hasn't been substituted for
+ # a list, e.g it's still $service_network. This happens when there is
+ # no network defined for the service in the ServiceNetMap, which is OK
+ # as not all services have to be bound to a network, so we filter them
+ expression: dict($.data.map.items().where(isString($[1]) and not $[1].endsWith("_network")))
+ data:
+ map:
+ map_replace:
+ - map_merge:
+ repeat:
+ template:
+ SERVICE_network: SERVICE_network
+ for_each:
+ SERVICE:
+ str_split: [',', {get_param: enabled_services}]
+ - values: {get_param: ServiceNetMap}
# provides a mapping of service_name_ips to a list of IPs
- {get_param: service_ips}
- {get_param: service_node_names}