1 heat_template_version: 2016-10-14
2 description: 'OpenStack ceph storage node configured by Puppet'
4 OvercloudCephStorageFlavor:
5 description: Flavor for the Ceph Storage 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 CephStorageExtraConfig takes precedence over ExtraConfig.
54 CephStorageExtraConfig:
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]
75 default: 'localdomain'
78 The DNS domain used for the hosts. This should match the dhcp_domain
79 configured in the Undercloud neutron. Defaults to localdomain.
80 CephStorageServerMetadata:
83 Extra properties or metadata passed to Nova for the created nodes in
84 the overcloud. It's accessible via the Nova metadata API. This option is
85 role-specific and is merged with the values given to the ServerMetadata
91 Extra properties or metadata passed to Nova for the created nodes in
92 the overcloud. It's accessible via the Nova metadata API. This applies to
93 all roles and is merged with a role-specific metadata parameter.
95 CephStorageSchedulerHints:
97 description: Optional scheduler hints to pass to nova
102 ServiceConfigSettings:
106 type: comma_delimited_list
108 MonitoringSubscriptions:
109 type: comma_delimited_list
113 description: Command which will be run whenever configuration data changes
114 default: os-refresh-config --timeout 14400
118 type: OS::TripleO::Server
121 command: {get_param: ConfigCommand}
123 image: {get_param: CephStorageImage}
124 image_update_policy: {get_param: ImageUpdatePolicy}
125 flavor: {get_param: OvercloudCephStorageFlavor}
126 key_name: {get_param: KeyName}
129 user_data_format: SOFTWARE_CONFIG
130 user_data: {get_resource: UserData}
133 template: {get_param: Hostname}
134 params: {get_param: HostnameMap}
135 software_config_transport: {get_param: SoftwareConfigTransport}
138 - {get_param: ServerMetadata}
139 - {get_param: CephStorageServerMetadata}
140 scheduler_hints: {get_param: CephStorageSchedulerHints}
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::CephStorage::Ports::ExternalPort
165 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
166 IPPool: {get_param: CephStorageIPs}
167 NodeIndex: {get_param: NodeIndex}
170 type: OS::TripleO::CephStorage::Ports::InternalApiPort
172 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
173 IPPool: {get_param: CephStorageIPs}
174 NodeIndex: {get_param: NodeIndex}
177 type: OS::TripleO::CephStorage::Ports::StoragePort
179 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
180 IPPool: {get_param: CephStorageIPs}
181 NodeIndex: {get_param: NodeIndex}
184 type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
186 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
187 IPPool: {get_param: CephStorageIPs}
188 NodeIndex: {get_param: NodeIndex}
191 type: OS::TripleO::CephStorage::Ports::TenantPort
193 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
194 IPPool: {get_param: CephStorageIPs}
195 NodeIndex: {get_param: NodeIndex}
198 type: OS::TripleO::CephStorage::Ports::ManagementPort
200 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
201 IPPool: {get_param: CephStorageIPs}
202 NodeIndex: {get_param: NodeIndex}
205 type: OS::TripleO::CephStorage::Net::SoftwareConfig
207 ControlPlaneIp: {get_attr: [CephStorage, 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: [CephStorage, 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::Heat::Value
247 - - {get_attr: [CephStorage, name]}
249 - {get_param: CloudDomain}
253 - - {get_attr: [CephStorage, name]}
259 - - {get_attr: [CephStorage, name]}
261 - {get_param: CloudDomain}
265 - - {get_attr: [CephStorage, name]}
271 - - {get_attr: [CephStorage, name]}
273 - {get_param: CloudDomain}
277 - - {get_attr: [CephStorage, name]}
283 - - {get_attr: [CephStorage, name]}
285 - {get_param: CloudDomain}
289 - - {get_attr: [CephStorage, name]}
295 - - {get_attr: [CephStorage, name]}
297 - {get_param: CloudDomain}
301 - - {get_attr: [CephStorage, name]}
307 - - {get_attr: [CephStorage, name]}
309 - {get_param: CloudDomain}
313 - - {get_attr: [CephStorage, name]}
319 - - {get_attr: [CephStorage, name]}
321 - {get_param: CloudDomain}
325 - - {get_attr: [CephStorage, name]}
329 type: OS::TripleO::SoftwareDeployment
331 name: NetworkDeployment
332 config: {get_resource: NetworkConfig}
333 server: {get_resource: CephStorage}
334 actions: {get_param: NetworkDeploymentActions}
336 CephStorageDeployment:
337 type: OS::Heat::StructuredDeployment
338 depends_on: NetworkDeployment
340 name: CephStorageDeployment
341 config: {get_resource: CephStorageConfig}
342 server: {get_resource: CephStorage}
344 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
347 type: OS::Heat::StructuredConfig
353 - heat_config_%{::deploy_config_name}
359 - bootstrap_node # provided by allNodesConfig
360 - all_nodes # provided by allNodesConfig
361 - vip_data # provided by allNodesConfig
363 merge_behavior: deeper
366 service_names: {get_param: ServiceNames}
367 sensu::subscriptions: {get_param: MonitoringSubscriptions}
370 - {get_param: ServiceConfigSettings}
371 - values: {get_attr: [NetIpMap, net_ip_map]}
372 ceph_extraconfig: {get_param: CephStorageExtraConfig}
373 extraconfig: {get_param: ExtraConfig}
375 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
376 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
377 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
378 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
379 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
380 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
381 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
383 # Resource for site-specific injection of root certificate
385 depends_on: CephStorageDeployment
386 type: OS::TripleO::NodeTLSCAData
388 server: {get_resource: CephStorage}
390 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
391 CephStorageExtraConfigPre:
392 depends_on: CephStorageDeployment
393 type: OS::TripleO::CephStorageExtraConfigPre
395 server: {get_resource: CephStorage}
397 # Hook for site-specific additional pre-deployment config,
398 # applying to all nodes, e.g node registration/unregistration
400 depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
401 type: OS::TripleO::NodeExtraConfig
403 server: {get_resource: CephStorage}
406 type: OS::TripleO::Tasks::PackageUpdate
409 type: OS::Heat::SoftwareDeployment
411 config: {get_resource: UpdateConfig}
412 server: {get_resource: CephStorage}
415 get_param: UpdateIdentifier
419 description: IP address of the server in the ctlplane network
420 value: {get_attr: [CephStorage, networks, ctlplane, 0]}
422 description: Hostname of the server
423 value: {get_attr: [CephStorage, name]}
425 description: Mapping of network names to hostnames
427 external: {get_attr: [NetHostMap, value, external, fqdn]}
428 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
429 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
430 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
431 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
432 management: {get_attr: [NetHostMap, value, management, fqdn]}
433 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
438 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
439 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
440 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
441 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
442 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
443 TENANTIP TENANTHOST.DOMAIN TENANTHOST
444 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
445 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
447 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
448 DOMAIN: {get_param: CloudDomain}
449 PRIMARYHOST: {get_attr: [CephStorage, name]}
450 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
451 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
452 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
453 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
454 STORAGEIP: {get_attr: [StoragePort, ip_address]}
455 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
456 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
457 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
458 TENANTIP: {get_attr: [TenantPort, ip_address]}
459 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
460 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
461 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
462 CTLPLANEIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
463 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
464 nova_server_resource:
465 description: Heat resource handle for the ceph storage server
467 {get_resource: CephStorage}
469 description: IP address of the server in the external network
470 value: {get_attr: [ExternalPort, ip_address]}
471 internal_api_ip_address:
472 description: IP address of the server in the internal_api network
473 value: {get_attr: [InternalApiPort, ip_address]}
475 description: IP address of the server in the storage network
476 value: {get_attr: [StoragePort, ip_address]}
477 storage_mgmt_ip_address:
478 description: IP address of the server in the storage_mgmt network
479 value: {get_attr: [StorageMgmtPort, ip_address]}
481 description: IP address of the server in the tenant network
482 value: {get_attr: [TenantPort, ip_address]}
483 management_ip_address:
484 description: IP address of the server in the management network
485 value: {get_attr: [ManagementPort, ip_address]}