1 heat_template_version: ocata
2 description: 'All Nodes Config for Puppet'
7 cloud_name_internal_api:
11 cloud_name_storage_mgmt:
15 # FIXME(shardy) this can be comma_delimited_list when
16 # https://bugs.launchpad.net/heat/+bug/1617019 is fixed
20 type: comma_delimited_list
29 short_service_node_names:
31 short_service_bootstrap_node:
34 type: comma_delimited_list
36 type: comma_delimited_list
48 Setting this to a unique value will re-run any deployment tasks which
49 perform configuration on a Heat stack-update.
53 Setting to a previously unused value during stack-update will trigger
54 package update on all nodes
58 Heat action on performed top-level stack.
60 - allowed_values: ['CREATE', 'UPDATE']
61 # NOTE(jaosorior): This is being set as IPA as it's the first
62 # CA we'll actually be testing out. But we can change this if
73 description: The name of the internal API network.
77 description: The name of the external network.
81 description: The name of the management network.
85 description: The name of the storage network.
89 description: The name of the Storage management network.
93 description: The name of the tenant network.
100 type: OS::Heat::StructuredConfig
106 bootstrap_nodeid: {get_input: bootstrap_nodeid}
107 bootstrap_nodeid_ip: {get_input: bootstrap_nodeid_ip}
110 - tripleo::profile::base::logging::fluentd::fluentd_sources: {get_param: logging_sources}
111 - tripleo::profile::base::logging::fluentd::fluentd_groups: {get_param: logging_groups}
112 - enabled_services: {get_param: enabled_services}
113 # This writes out a mapping of service_name_enabled: 'true'
114 # For any services not enabled, hiera foo_enabled will
115 # return nil, as it's undefined
119 # Note this must be string 'true' due to
120 # https://bugs.launchpad.net/heat/+bug/1617203
121 SERVICE_enabled: 'true'
124 str_split: [',', {get_param: enabled_services}]
125 # Dynamically generate per-service network data
126 # This works as follows (outer->inner functions)
127 # yaql - filters services where no mapping exists in ServiceNetMap
128 # map_replace: substitute e.g heat_api_network with network name from ServiceNetMap
129 # map_merge/repeat: generate a per-service mapping
131 # This filters any entries where the value hasn't been substituted for
132 # a list, e.g it's still $service_network. This happens when there is
133 # no network defined for the service in the ServiceNetMap, which is OK
134 # as not all services have to be bound to a network, so we filter them
135 expression: dict($.data.map.items().where(isString($[1]) and not $[1].endsWith("_network")))
142 SERVICE_network: SERVICE_network
145 str_split: [',', {get_param: enabled_services}]
146 - values: {get_param: ServiceNetMap}
147 # Keystone doesn't provide separate entries for the public
148 # and admin endpoints, so we need to add them here manually
149 # like we do in the vip-config below
150 - keystone_admin_api_network: {get_param: [ServiceNetMap, keystone_admin_api_network]}
151 keystone_public_api_network: {get_param: [ServiceNetMap, keystone_public_api_network]}
152 # provides a mapping of service_name_ips to a list of IPs
153 - {get_param: service_ips}
154 - {get_param: service_node_names}
155 - {get_param: short_service_node_names}
156 - {get_param: short_service_bootstrap_node}
157 - controller_node_ips:
160 - {get_param: controller_ips}
161 controller_node_names:
164 - {get_param: controller_names}
165 memcached_node_ips_v6:
167 template: "inet6:[NAME]"
169 NAME: {get_param: memcache_node_ips}
170 deploy_identifier: {get_param: DeployIdentifier}
171 update_identifier: {get_param: UpdateIdentifier}
172 stack_action: {get_param: StackAction}
175 # Dynamically generate per-service VIP data based on enabled_services
176 # This works as follows (outer->inner functions)
177 # yaql - filters services where no mapping exists in ServiceNetMap
178 # map_replace: substitute e.g internal_api with the IP from NetVipMap
179 # map_replace: substitute e.g heat_api_network with network name from ServiceNetMap
180 # map_merge/repeat: generate a per-service mapping
182 # This filters any entries where the value hasn't been substituted for
183 # a list, e.g it's still $service_network. This happens when there is
184 # no network defined for the service in the ServiceNetMap, which is OK
185 # as not all services have to be bound to a network, so we filter them
186 expression: dict($.data.map.items().where(isString($[1]) and not $[1].endsWith("_network")))
194 SERVICE_vip: SERVICE_network
197 str_split: [',', {get_param: enabled_services}]
198 - values: {get_param: ServiceNetMap}
199 - values: {get_param: NetVipMap}
200 - keystone_admin_api_vip:
201 get_param: [NetVipMap, {get_param: [ServiceNetMap, keystone_admin_api_network]}]
202 keystone_public_api_vip:
203 get_param: [NetVipMap, {get_param: [ServiceNetMap, keystone_public_api_network]}]
204 public_virtual_ip: {get_param: [NetVipMap, {get_param: ExternalNetName}]}
205 controller_virtual_ip: {get_param: [NetVipMap, ctlplane]}
206 internal_api_virtual_ip: {get_param: [NetVipMap, {get_param: InternalApiNetName}]}
207 storage_virtual_ip: {get_param: [NetVipMap, {get_param: StorageNetName}]}
208 storage_mgmt_virtual_ip: {get_param: [NetVipMap, {get_param: StorageMgmtNetName}]}
209 redis_vip: {get_param: RedisVirtualIP}
210 # public_virtual_ip and controller_virtual_ip are needed in
211 # both HAproxy & keepalived.
212 tripleo::haproxy::public_virtual_ip: {get_param: [NetVipMap, {get_param: ExternalNetName}]}
213 tripleo::haproxy::controller_virtual_ip: {get_param: [NetVipMap, ctlplane]}
214 tripleo::keepalived::public_virtual_ip: {get_param: [NetVipMap, {get_param: ExternalNetName}]}
215 tripleo::keepalived::controller_virtual_ip: {get_param: [NetVipMap, ctlplane]}
216 tripleo::keepalived::internal_api_virtual_ip: {get_param: [NetVipMap, {get_param: InternalApiNetName}]}
217 tripleo::keepalived::storage_virtual_ip: {get_param: [NetVipMap, {get_param: StorageNetName}]}
218 tripleo::keepalived::storage_mgmt_virtual_ip: {get_param: [NetVipMap, {get_param: StorageMgmtNetName}]}
219 tripleo::keepalived::redis_virtual_ip: {get_param: RedisVirtualIP}
220 tripleo::redis_notification::haproxy_monitor_ip: {get_param: [NetVipMap, ctlplane]}
221 cloud_name_external: {get_param: cloud_name_external}
222 cloud_name_internal_api: {get_param: cloud_name_internal_api}
223 cloud_name_storage: {get_param: cloud_name_storage}
224 cloud_name_storage_mgmt: {get_param: cloud_name_storage_mgmt}
225 cloud_name_ctlplane: {get_param: cloud_name_ctlplane}
227 certmonger_ca: {get_param: CertmongerCA}
228 enable_internal_tls: {get_param: EnableInternalTLS}
232 description: The ID of the allNodesConfigImpl resource.
234 {get_resource: allNodesConfigImpl}