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
263 - bootstrap_node # provided by allNodesConfig
264 - all_nodes # provided by allNodesConfig
265 - vip_data # provided by allNodesConfig
267 merge_behavior: deeper
271 service_names: {get_param: ServiceNames}
272 sensu::subscriptions: {get_param: MonitoringSubscriptions}
276 - {get_param: ServiceConfigSettings}
277 - values: {get_attr: [NetIpMap, net_ip_map]}
278 {{role.lower()}}_extraconfig:
279 mapped_data: {get_param: {{role}}ExtraConfig}
281 mapped_data: {get_param: ExtraConfig}
284 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
285 tripleo::profile::base::logging::fluentd::fluentd_sources: {get_param: LoggingSources}
286 tripleo::profile::base::logging::fluentd::fluentd_groups: {get_param: LoggingGroups}
288 # Resource for site-specific injection of root certificate
290 depends_on: {{role}}Deployment
291 type: OS::TripleO::NodeTLSCAData
293 server: {get_resource: {{role}}}
295 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
296 {{role}}ExtraConfigPre:
297 depends_on: {{role}}Deployment
298 type: OS::TripleO::{{role}}ExtraConfigPre
300 server: {get_resource: {{role}}}
302 # Hook for site-specific additional pre-deployment config,
303 # applying to all nodes, e.g node registration/unregistration
305 depends_on: [{{role}}ExtraConfigPre, NodeTLSCAData]
306 type: OS::TripleO::NodeExtraConfig
308 server: {get_resource: {{role}}}
311 type: OS::TripleO::Tasks::PackageUpdate
314 type: OS::Heat::SoftwareDeployment
316 config: {get_resource: UpdateConfig}
317 server: {get_resource: {{role}}}
320 get_param: UpdateIdentifier
324 description: IP address of the server in the ctlplane network
325 value: {get_attr: [{{role}}, networks, ctlplane, 0]}
327 description: Hostname of the server
328 value: {get_attr: [{{role}}, name]}
330 description: Mapping of network names to hostnames
335 - - {get_attr: [{{role}}, name]}
337 - {get_param: CloudDomain}
341 - - {get_attr: [{{role}}, name]}
343 - {get_param: CloudDomain}
347 - - {get_attr: [{{role}}, name]}
349 - {get_param: CloudDomain}
353 - - {get_attr: [{{role}}, name]}
355 - {get_param: CloudDomain}
359 - - {get_attr: [{{role}}, name]}
361 - {get_param: CloudDomain}
365 - - {get_attr: [{{role}}, name]}
367 - {get_param: CloudDomain}
371 - - {get_attr: [{{role}}, name]}
373 - {get_param: CloudDomain}
378 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
379 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
380 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
381 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
382 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
383 TENANTIP TENANTHOST.DOMAIN TENANTHOST
384 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
385 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
387 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, {{role}}HostnameResolveNetwork]}]}
388 DOMAIN: {get_param: CloudDomain}
389 PRIMARYHOST: {get_attr: [{{role}}, name]}
390 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
394 - - {get_attr: [{{role}}, name]}
396 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
400 - - {get_attr: [{{role}}, name]}
402 STORAGEIP: {get_attr: [StoragePort, ip_address]}
406 - - {get_attr: [{{role}}, name]}
408 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
412 - - {get_attr: [{{role}}, name]}
414 TENANTIP: {get_attr: [TenantPort, ip_address]}
418 - - {get_attr: [{{role}}, name]}
420 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
424 - - {get_attr: [{{role}}, name]}
426 CTLPLANEIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
430 - - {get_attr: [{{role}}, name]}
432 nova_server_resource:
433 description: Heat resource handle for {{role}} server
435 {get_resource: {{role}}}
437 description: IP address of the server in the external network
438 value: {get_attr: [ExternalPort, ip_address]}
439 internal_api_ip_address:
440 description: IP address of the server in the internal_api network
441 value: {get_attr: [InternalApiPort, ip_address]}
443 description: IP address of the server in the storage network
444 value: {get_attr: [StoragePort, ip_address]}
445 storage_mgmt_ip_address:
446 description: IP address of the server in the storage_mgmt network
447 value: {get_attr: [StorageMgmtPort, ip_address]}
449 description: IP address of the server in the tenant network
450 value: {get_attr: [TenantPort, ip_address]}
451 management_ip_address:
452 description: IP address of the server in the management network
453 value: {get_attr: [ManagementPort, ip_address]}