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]}
332 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
333 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
334 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
335 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
336 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
337 TENANTIP TENANTHOST.DOMAIN TENANTHOST
338 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
339 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
341 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, {{role}}HostnameResolveNetwork]}]}
342 DOMAIN: {get_param: CloudDomain}
343 PRIMARYHOST: {get_attr: [{{role}}, name]}
344 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
348 - - {get_attr: [{{role}}, name]}
350 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
354 - - {get_attr: [{{role}}, name]}
356 STORAGEIP: {get_attr: [StoragePort, ip_address]}
360 - - {get_attr: [{{role}}, name]}
362 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
366 - - {get_attr: [{{role}}, name]}
368 TENANTIP: {get_attr: [TenantPort, ip_address]}
372 - - {get_attr: [{{role}}, name]}
374 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
378 - - {get_attr: [{{role}}, name]}
380 CTLPLANEIP: {get_attr: [{{role}}, networks, ctlplane, 0]}
384 - - {get_attr: [{{role}}, name]}
386 nova_server_resource:
387 description: Heat resource handle for {{role}} server
389 {get_resource: {{role}}}
391 description: IP address of the server in the external network
392 value: {get_attr: [ExternalPort, ip_address]}
393 internal_api_ip_address:
394 description: IP address of the server in the internal_api network
395 value: {get_attr: [InternalApiPort, ip_address]}
397 description: IP address of the server in the storage network
398 value: {get_attr: [StoragePort, ip_address]}
399 storage_mgmt_ip_address:
400 description: IP address of the server in the storage_mgmt network
401 value: {get_attr: [StorageMgmtPort, ip_address]}
403 description: IP address of the server in the tenant network
404 value: {get_attr: [TenantPort, ip_address]}
405 management_ip_address:
406 description: IP address of the server in the management network
407 value: {get_attr: [ManagementPort, ip_address]}