1 heat_template_version: 2016-10-14
2 description: 'OpenStack {{role}} node configured by Puppet'
4 Overcloud{{role}}Flavor:
5 description: Flavor for the {{role}} node.
8 {% if disable_constraints is not defined %}
10 - custom_constraint: nova.flavor
14 default: overcloud-full
15 {% if disable_constraints is not defined %}
17 - custom_constraint: glance.image
20 default: 'REBUILD_PRESERVE_EPHEMERAL'
21 description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
24 description: Name of an existing Nova key pair to enable SSH access to the instances
27 {% if disable_constraints is not defined %}
29 - custom_constraint: nova.keypair
33 description: Mapping of service_name -> network name. Typically set
34 via parameter_defaults in the resource registry.
38 description: Mapping of service endpoint -> protocol. Typically set
39 via parameter_defaults in the resource registry.
45 Setting to a previously unused value during stack-update will trigger
46 package update on all nodes
49 default: '' # Defaults to Heat created hostname
53 description: Optional mapping to override hostnames
57 Additional hiera configuration to inject into the cluster. Note
58 that {{role}}ExtraConfig takes precedence over ExtraConfig.
63 Role specific additional hiera configuration to inject into the cluster.
68 NetworkDeploymentActions:
69 type: comma_delimited_list
71 Heat action when to apply network configuration changes
73 SoftwareConfigTransport:
74 default: POLL_SERVER_CFN
76 How the server should receive the metadata required for software configuration.
79 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
81 default: 'localdomain'
84 The DNS domain used for the hosts. This should match the dhcp_domain
85 configured in the Undercloud neutron. Defaults to localdomain.
89 Extra properties or metadata passed to Nova for the created nodes in
90 the overcloud. It's accessible via the Nova metadata API.
92 {{role}}SchedulerHints:
94 description: Optional scheduler hints to pass to nova
99 ServiceConfigSettings:
103 type: comma_delimited_list
105 MonitoringSubscriptions:
106 type: comma_delimited_list
110 description: Command which will be run whenever configuration data changes
111 default: os-refresh-config --timeout 14400
116 type: comma_delimited_list
121 type: OS::TripleO::Server
124 command: {get_param: ConfigCommand}
126 image: {get_param: {{role}}Image}
127 image_update_policy: {get_param: ImageUpdatePolicy}
128 flavor: {get_param: Overcloud{{role}}Flavor}
129 key_name: {get_param: KeyName}
132 user_data_format: SOFTWARE_CONFIG
133 user_data: {get_resource: UserData}
136 template: {get_param: Hostname}
137 params: {get_param: HostnameMap}
138 software_config_transport: {get_param: SoftwareConfigTransport}
139 metadata: {get_param: ServerMetadata}
140 scheduler_hints: {get_param: {{role}}SchedulerHints}
142 # Combine the NodeAdminUserData and NodeUserData mime archives
144 type: OS::Heat::MultipartMime
147 - config: {get_resource: NodeAdminUserData}
149 - config: {get_resource: NodeUserData}
152 # Creates the "heat-admin" user if configured via the environment
153 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
155 type: OS::TripleO::NodeAdminUserData
157 # For optional operator additional userdata
158 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
160 type: OS::TripleO::NodeUserData
163 type: OS::TripleO::{{role}}::Ports::ExternalPort
165 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
166 IPPool: {get_param: {{role}}IPs}
167 NodeIndex: {get_param: NodeIndex}
170 type: OS::TripleO::{{role}}::Ports::InternalApiPort
172 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
173 IPPool: {get_param: {{role}}IPs}
174 NodeIndex: {get_param: NodeIndex}
177 type: OS::TripleO::{{role}}::Ports::StoragePort
179 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
180 IPPool: {get_param: {{role}}IPs}
181 NodeIndex: {get_param: NodeIndex}
184 type: OS::TripleO::{{role}}::Ports::StorageMgmtPort
186 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
187 IPPool: {get_param: {{role}}IPs}
188 NodeIndex: {get_param: NodeIndex}
191 type: OS::TripleO::{{role}}::Ports::TenantPort
193 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
194 IPPool: {get_param: {{role}}IPs}
195 NodeIndex: {get_param: NodeIndex}
198 type: OS::TripleO::{{role}}::Ports::ManagementPort
200 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
201 IPPool: {get_param: {{role}}IPs}
202 NodeIndex: {get_param: NodeIndex}
205 type: OS::TripleO::{{role}}::Net::SoftwareConfig
207 ControlPlaneIp: {get_attr: [{{role}}, networks, ctlplane, 0]}
208 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
209 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
210 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
211 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
212 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
213 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
216 type: OS::TripleO::Network::Ports::NetIpMap
218 ControlPlaneIp: {get_attr: [{{role}}, networks, ctlplane, 0]}
219 ExternalIp: {get_attr: [ExternalPort, ip_address]}
220 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
221 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
222 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
223 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
224 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
225 StorageIp: {get_attr: [StoragePort, ip_address]}
226 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
227 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
228 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
229 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
230 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
231 TenantIp: {get_attr: [TenantPort, ip_address]}
232 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
233 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
234 ManagementIp: {get_attr: [ManagementPort, ip_address]}
235 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
236 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
239 type: OS::TripleO::SoftwareDeployment
241 name: NetworkDeployment
242 config: {get_resource: NetworkConfig}
243 server: {get_resource: {{role}}}
244 actions: {get_param: NetworkDeploymentActions}
247 type: OS::Heat::StructuredDeployment
248 depends_on: NetworkDeployment
250 name: {{role}}Deployment
251 config: {get_resource: {{role}}Config}
252 server: {get_resource: {{role}}}
254 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
257 type: OS::Heat::StructuredConfig
263 - heat_config_%{::deploy_config_name}
264 - {{role.lower()}}_extraconfig
269 - bootstrap_node # provided by allNodesConfig
270 - all_nodes # provided by allNodesConfig
271 - vip_data # provided by allNodesConfig
273 merge_behavior: deeper
276 service_names: {get_param: ServiceNames}
277 sensu::subscriptions: {get_param: MonitoringSubscriptions}
280 - {get_param: ServiceConfigSettings}
281 - values: {get_attr: [NetIpMap, net_ip_map]}
282 {{role.lower()}}_extraconfig: {get_param: {{role}}ExtraConfig}
283 extraconfig: {get_param: ExtraConfig}
285 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
286 tripleo::profile::base::logging::fluentd::fluentd_sources: {get_param: LoggingSources}
287 tripleo::profile::base::logging::fluentd::fluentd_groups: {get_param: LoggingGroups}
291 - - {get_attr: [{{role}}, name]}
293 - {get_param: CloudDomain}
297 - - {get_attr: [{{role}}, name]}
299 - {get_param: CloudDomain}
303 - - {get_attr: [{{role}}, name]}
305 - {get_param: CloudDomain}
309 - - {get_attr: [{{role}}, name]}
311 - {get_param: CloudDomain}
315 - - {get_attr: [{{role}}, name]}
317 - {get_param: CloudDomain}
321 - - {get_attr: [{{role}}, name]}
323 - {get_param: CloudDomain}
325 # Resource for site-specific injection of root certificate
327 depends_on: {{role}}Deployment
328 type: OS::TripleO::NodeTLSCAData
330 server: {get_resource: {{role}}}
332 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
333 {{role}}ExtraConfigPre:
334 depends_on: {{role}}Deployment
335 type: OS::TripleO::{{role}}ExtraConfigPre
337 server: {get_resource: {{role}}}
339 # Hook for site-specific additional pre-deployment config,
340 # applying to all nodes, e.g node registration/unregistration
342 depends_on: [{{role}}ExtraConfigPre, NodeTLSCAData]
343 type: OS::TripleO::NodeExtraConfig
345 server: {get_resource: {{role}}}
348 type: OS::TripleO::Tasks::PackageUpdate
351 type: OS::Heat::SoftwareDeployment
353 config: {get_resource: UpdateConfig}
354 server: {get_resource: {{role}}}
357 get_param: UpdateIdentifier
361 description: IP address of the server in the ctlplane network
362 value: {get_attr: [{{role}}, networks, ctlplane, 0]}
364 description: Hostname of the server
365 value: {get_attr: [{{role}}, name]}
367 description: Mapping of network names to hostnames
372 - - {get_attr: [{{role}}, name]}
374 - {get_param: CloudDomain}
378 - - {get_attr: [{{role}}, name]}
380 - {get_param: CloudDomain}
384 - - {get_attr: [{{role}}, name]}
386 - {get_param: CloudDomain}
390 - - {get_attr: [{{role}}, name]}
392 - {get_param: CloudDomain}
396 - - {get_attr: [{{role}}, name]}
398 - {get_param: CloudDomain}
402 - - {get_attr: [{{role}}, name]}
404 - {get_param: CloudDomain}
408 - - {get_attr: [{{role}}, name]}
410 - {get_param: CloudDomain}
415 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
416 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
417 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
418 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
419 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
420 TENANTIP TENANTHOST.DOMAIN TENANTHOST
421 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
422 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
424 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, {{role}}HostnameResolveNetwork]}]}
425 DOMAIN: {get_param: CloudDomain}
426 PRIMARYHOST: {get_attr: [{{role}}, name]}
427 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
431 - - {get_attr: [{{role}}, name]}
433 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
437 - - {get_attr: [{{role}}, name]}
439 STORAGEIP: {get_attr: [StoragePort, ip_address]}
443 - - {get_attr: [{{role}}, name]}
445 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
449 - - {get_attr: [{{role}}, name]}
451 TENANTIP: {get_attr: [TenantPort, ip_address]}
455 - - {get_attr: [{{role}}, name]}
457 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
461 - - {get_attr: [{{role}}, name]}
463 CTLPLANEIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
467 - - {get_attr: [{{role}}, name]}
469 nova_server_resource:
470 description: Heat resource handle for {{role}} server
472 {get_resource: {{role}}}
474 description: IP address of the server in the external network
475 value: {get_attr: [ExternalPort, ip_address]}
476 internal_api_ip_address:
477 description: IP address of the server in the internal_api network
478 value: {get_attr: [InternalApiPort, ip_address]}
480 description: IP address of the server in the storage network
481 value: {get_attr: [StoragePort, ip_address]}
482 storage_mgmt_ip_address:
483 description: IP address of the server in the storage_mgmt network
484 value: {get_attr: [StorageMgmtPort, ip_address]}
486 description: IP address of the server in the tenant network
487 value: {get_attr: [TenantPort, ip_address]}
488 management_ip_address:
489 description: IP address of the server in the management network
490 value: {get_attr: [ManagementPort, ip_address]}