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}
289 # Resource for site-specific injection of root certificate
291 depends_on: {{role}}Deployment
292 type: OS::TripleO::NodeTLSCAData
294 server: {get_resource: {{role}}}
296 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
297 {{role}}ExtraConfigPre:
298 depends_on: {{role}}Deployment
299 type: OS::TripleO::{{role}}ExtraConfigPre
301 server: {get_resource: {{role}}}
303 # Hook for site-specific additional pre-deployment config,
304 # applying to all nodes, e.g node registration/unregistration
306 depends_on: [{{role}}ExtraConfigPre, NodeTLSCAData]
307 type: OS::TripleO::NodeExtraConfig
309 server: {get_resource: {{role}}}
312 type: OS::TripleO::Tasks::PackageUpdate
315 type: OS::Heat::SoftwareDeployment
317 config: {get_resource: UpdateConfig}
318 server: {get_resource: {{role}}}
321 get_param: UpdateIdentifier
325 description: IP address of the server in the ctlplane network
326 value: {get_attr: [{{role}}, networks, ctlplane, 0]}
328 description: Hostname of the server
329 value: {get_attr: [{{role}}, name]}
331 description: Mapping of network names to hostnames
336 - - {get_attr: [{{role}}, name]}
338 - {get_param: CloudDomain}
342 - - {get_attr: [{{role}}, name]}
344 - {get_param: CloudDomain}
348 - - {get_attr: [{{role}}, name]}
350 - {get_param: CloudDomain}
354 - - {get_attr: [{{role}}, name]}
356 - {get_param: CloudDomain}
360 - - {get_attr: [{{role}}, name]}
362 - {get_param: CloudDomain}
366 - - {get_attr: [{{role}}, name]}
368 - {get_param: CloudDomain}
372 - - {get_attr: [{{role}}, name]}
374 - {get_param: CloudDomain}
379 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
380 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
381 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
382 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
383 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
384 TENANTIP TENANTHOST.DOMAIN TENANTHOST
385 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
386 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
388 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, {{role}}HostnameResolveNetwork]}]}
389 DOMAIN: {get_param: CloudDomain}
390 PRIMARYHOST: {get_attr: [{{role}}, name]}
391 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
395 - - {get_attr: [{{role}}, name]}
397 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
401 - - {get_attr: [{{role}}, name]}
403 STORAGEIP: {get_attr: [StoragePort, ip_address]}
407 - - {get_attr: [{{role}}, name]}
409 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
413 - - {get_attr: [{{role}}, name]}
415 TENANTIP: {get_attr: [TenantPort, ip_address]}
419 - - {get_attr: [{{role}}, name]}
421 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
425 - - {get_attr: [{{role}}, name]}
427 CTLPLANEIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
431 - - {get_attr: [{{role}}, name]}
433 nova_server_resource:
434 description: Heat resource handle for {{role}} server
436 {get_resource: {{role}}}
438 description: IP address of the server in the external network
439 value: {get_attr: [ExternalPort, ip_address]}
440 internal_api_ip_address:
441 description: IP address of the server in the internal_api network
442 value: {get_attr: [InternalApiPort, ip_address]}
444 description: IP address of the server in the storage network
445 value: {get_attr: [StoragePort, ip_address]}
446 storage_mgmt_ip_address:
447 description: IP address of the server in the storage_mgmt network
448 value: {get_attr: [StorageMgmtPort, ip_address]}
450 description: IP address of the server in the tenant network
451 value: {get_attr: [TenantPort, ip_address]}
452 management_ip_address:
453 description: IP address of the server in the management network
454 value: {get_attr: [ManagementPort, ip_address]}