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.
9 - custom_constraint: nova.flavor
12 default: overcloud-full
14 - custom_constraint: glance.image
16 default: 'REBUILD_PRESERVE_EPHEMERAL'
17 description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
20 description: Name of an existing Nova key pair to enable SSH access to the instances
24 - custom_constraint: nova.keypair
27 description: Mapping of service_name -> network name. Typically set
28 via parameter_defaults in the resource registry.
32 description: Mapping of service endpoint -> protocol. Typically set
33 via parameter_defaults in the resource registry.
39 Setting to a previously unused value during stack-update will trigger
40 package update on all nodes
43 default: '' # Defaults to Heat created hostname
47 description: Optional mapping to override hostnames
51 Additional hiera configuration to inject into the cluster. Note
52 that {{role}}ExtraConfig takes precedence over ExtraConfig.
57 Role specific additional hiera configuration to inject into the cluster.
62 NetworkDeploymentActions:
63 type: comma_delimited_list
65 Heat action when to apply network configuration changes
67 SoftwareConfigTransport:
68 default: POLL_SERVER_CFN
70 How the server should receive the metadata required for software configuration.
73 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
77 The DNS domain used for the hosts. This should match the dhcp_domain
78 configured in the Undercloud neutron. Defaults to localdomain.
82 Extra properties or metadata passed to Nova for the created nodes in
83 the overcloud. It's accessible via the Nova metadata API.
85 {{role}}SchedulerHints:
87 description: Optional scheduler hints to pass to nova
92 ServiceConfigSettings:
96 type: comma_delimited_list
98 MonitoringSubscriptions:
99 type: comma_delimited_list
103 description: Command which will be run whenever configuration data changes
104 default: os-refresh-config --timeout 14400
109 type: comma_delimited_list
114 type: OS::TripleO::Server
117 command: {get_param: ConfigCommand}
119 image: {get_param: {{role}}Image}
120 image_update_policy: {get_param: ImageUpdatePolicy}
121 flavor: {get_param: Overcloud{{role}}Flavor}
122 key_name: {get_param: KeyName}
125 user_data_format: SOFTWARE_CONFIG
126 user_data: {get_resource: UserData}
129 template: {get_param: Hostname}
130 params: {get_param: HostnameMap}
131 software_config_transport: {get_param: SoftwareConfigTransport}
132 metadata: {get_param: ServerMetadata}
133 scheduler_hints: {get_param: {{role}}SchedulerHints}
135 # Combine the NodeAdminUserData and NodeUserData mime archives
137 type: OS::Heat::MultipartMime
140 - config: {get_resource: NodeAdminUserData}
142 - config: {get_resource: NodeUserData}
145 # Creates the "heat-admin" user if configured via the environment
146 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
148 type: OS::TripleO::NodeAdminUserData
150 # For optional operator additional userdata
151 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
153 type: OS::TripleO::NodeUserData
156 type: OS::TripleO::{{role}}::Ports::ExternalPort
158 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
159 IPPool: {get_param: {{role}}IPs}
160 NodeIndex: {get_param: NodeIndex}
163 type: OS::TripleO::{{role}}::Ports::InternalApiPort
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::StoragePort
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::StorageMgmtPort
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::TenantPort
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::ManagementPort
193 ControlPlaneIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
194 IPPool: {get_param: {{role}}IPs}
195 NodeIndex: {get_param: NodeIndex}
198 type: OS::TripleO::{{role}}::Net::SoftwareConfig
200 ControlPlaneIp: {get_attr: [{{role}}, networks, ctlplane, 0]}
201 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
202 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
203 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
204 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
205 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
206 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
209 type: OS::TripleO::Network::Ports::NetIpMap
211 ControlPlaneIp: {get_attr: [{{role}}, networks, ctlplane, 0]}
212 ExternalIp: {get_attr: [ExternalPort, ip_address]}
213 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
214 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
215 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
216 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
217 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
218 StorageIp: {get_attr: [StoragePort, ip_address]}
219 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
220 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
221 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
222 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
223 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
224 TenantIp: {get_attr: [TenantPort, ip_address]}
225 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
226 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
227 ManagementIp: {get_attr: [ManagementPort, ip_address]}
228 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
229 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
232 type: OS::TripleO::SoftwareDeployment
234 name: NetworkDeployment
235 config: {get_resource: NetworkConfig}
236 server: {get_resource: {{role}}}
237 actions: {get_param: NetworkDeploymentActions}
240 type: OS::Heat::StructuredDeployment
241 depends_on: NetworkDeployment
243 name: {{role}}Deployment
244 config: {get_resource: {{role}}Config}
245 server: {get_resource: {{role}}}
247 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
250 type: OS::Heat::StructuredConfig
252 group: os-apply-config
257 - heat_config_%{::deploy_config_name}
258 - {{role.lower()}}_extraconfig
262 - bootstrap_node # provided by allNodesConfig
263 - all_nodes # provided by allNodesConfig
264 - vip_data # provided by allNodesConfig
266 merge_behavior: deeper
270 service_names: {get_param: ServiceNames}
271 sensu::subscriptions: {get_param: MonitoringSubscriptions}
275 - {get_param: ServiceConfigSettings}
276 - values: {get_attr: [NetIpMap, net_ip_map]}
277 {{role.lower()}}_extraconfig:
278 mapped_data: {get_param: {{role}}ExtraConfig}
280 mapped_data: {get_param: ExtraConfig}
283 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
284 tripleo::profile::base::logging::fluentd::fluentd_sources: {get_param: LoggingSources}
285 tripleo::profile::base::logging::fluentd::fluentd_groups: {get_param: LoggingGroups}
287 # Resource for site-specific injection of root certificate
289 depends_on: {{role}}Deployment
290 type: OS::TripleO::NodeTLSCAData
292 server: {get_resource: {{role}}}
294 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
295 {{role}}ExtraConfigPre:
296 depends_on: {{role}}Deployment
297 type: OS::TripleO::{{role}}ExtraConfigPre
299 server: {get_resource: {{role}}}
301 # Hook for site-specific additional pre-deployment config,
302 # applying to all nodes, e.g node registration/unregistration
304 depends_on: [{{role}}ExtraConfigPre, NodeTLSCAData]
305 type: OS::TripleO::NodeExtraConfig
307 server: {get_resource: {{role}}}
310 type: OS::TripleO::Tasks::PackageUpdate
313 type: OS::Heat::SoftwareDeployment
315 config: {get_resource: UpdateConfig}
316 server: {get_resource: {{role}}}
319 get_param: UpdateIdentifier
323 description: IP address of the server in the ctlplane network
324 value: {get_attr: [{{role}}, networks, ctlplane, 0]}
326 description: Hostname of the server
327 value: {get_attr: [{{role}}, name]}
329 description: Mapping of network names to hostnames
334 - - {get_attr: [{{role}}, name]}
336 - {get_param: CloudDomain}
340 - - {get_attr: [{{role}}, name]}
342 - {get_param: CloudDomain}
346 - - {get_attr: [{{role}}, name]}
348 - {get_param: CloudDomain}
352 - - {get_attr: [{{role}}, name]}
354 - {get_param: CloudDomain}
358 - - {get_attr: [{{role}}, name]}
360 - {get_param: CloudDomain}
364 - - {get_attr: [{{role}}, name]}
366 - {get_param: CloudDomain}
370 - - {get_attr: [{{role}}, name]}
372 - {get_param: CloudDomain}
377 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
378 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
379 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
380 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
381 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
382 TENANTIP TENANTHOST.DOMAIN TENANTHOST
383 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
384 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
386 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, {{role}}HostnameResolveNetwork]}]}
387 DOMAIN: {get_param: CloudDomain}
388 PRIMARYHOST: {get_attr: [{{role}}, name]}
389 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
393 - - {get_attr: [{{role}}, name]}
395 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
399 - - {get_attr: [{{role}}, name]}
401 STORAGEIP: {get_attr: [StoragePort, ip_address]}
405 - - {get_attr: [{{role}}, name]}
407 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
411 - - {get_attr: [{{role}}, name]}
413 TENANTIP: {get_attr: [TenantPort, ip_address]}
417 - - {get_attr: [{{role}}, name]}
419 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
423 - - {get_attr: [{{role}}, name]}
425 CTLPLANEIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
429 - - {get_attr: [{{role}}, name]}
431 nova_server_resource:
432 description: Heat resource handle for {{role}} server
434 {get_resource: {{role}}}
436 description: IP address of the server in the external network
437 value: {get_attr: [ExternalPort, ip_address]}
438 internal_api_ip_address:
439 description: IP address of the server in the internal_api network
440 value: {get_attr: [InternalApiPort, ip_address]}
442 description: IP address of the server in the storage network
443 value: {get_attr: [StoragePort, ip_address]}
444 storage_mgmt_ip_address:
445 description: IP address of the server in the storage_mgmt network
446 value: {get_attr: [StorageMgmtPort, ip_address]}
448 description: IP address of the server in the tenant network
449 value: {get_attr: [TenantPort, ip_address]}
450 management_ip_address:
451 description: IP address of the server in the management network
452 value: {get_attr: [ManagementPort, ip_address]}