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.
83 Extra properties or metadata passed to Nova for the created nodes in
84 the overcloud. It's accessible via the Nova metadata API.
86 CephStorageSchedulerHints:
88 description: Optional scheduler hints to pass to nova
93 ServiceConfigSettings:
97 type: comma_delimited_list
99 MonitoringSubscriptions:
100 type: comma_delimited_list
104 description: Command which will be run whenever configuration data changes
105 default: os-refresh-config --timeout 14400
109 type: OS::TripleO::Server
112 command: {get_param: ConfigCommand}
114 image: {get_param: CephStorageImage}
115 image_update_policy: {get_param: ImageUpdatePolicy}
116 flavor: {get_param: OvercloudCephStorageFlavor}
117 key_name: {get_param: KeyName}
120 user_data_format: SOFTWARE_CONFIG
121 user_data: {get_resource: UserData}
124 template: {get_param: Hostname}
125 params: {get_param: HostnameMap}
126 software_config_transport: {get_param: SoftwareConfigTransport}
127 metadata: {get_param: ServerMetadata}
128 scheduler_hints: {get_param: CephStorageSchedulerHints}
130 # Combine the NodeAdminUserData and NodeUserData mime archives
132 type: OS::Heat::MultipartMime
135 - config: {get_resource: NodeAdminUserData}
137 - config: {get_resource: NodeUserData}
140 # Creates the "heat-admin" user if configured via the environment
141 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
143 type: OS::TripleO::NodeAdminUserData
145 # For optional operator additional userdata
146 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
148 type: OS::TripleO::NodeUserData
151 type: OS::TripleO::CephStorage::Ports::ExternalPort
153 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
154 IPPool: {get_param: CephStorageIPs}
155 NodeIndex: {get_param: NodeIndex}
158 type: OS::TripleO::CephStorage::Ports::InternalApiPort
160 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
161 IPPool: {get_param: CephStorageIPs}
162 NodeIndex: {get_param: NodeIndex}
165 type: OS::TripleO::CephStorage::Ports::StoragePort
167 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
168 IPPool: {get_param: CephStorageIPs}
169 NodeIndex: {get_param: NodeIndex}
172 type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
174 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
175 IPPool: {get_param: CephStorageIPs}
176 NodeIndex: {get_param: NodeIndex}
179 type: OS::TripleO::CephStorage::Ports::TenantPort
181 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
182 IPPool: {get_param: CephStorageIPs}
183 NodeIndex: {get_param: NodeIndex}
186 type: OS::TripleO::CephStorage::Ports::ManagementPort
188 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
189 IPPool: {get_param: CephStorageIPs}
190 NodeIndex: {get_param: NodeIndex}
193 type: OS::TripleO::CephStorage::Net::SoftwareConfig
195 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
196 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
197 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
198 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
199 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
200 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
201 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
204 type: OS::TripleO::Network::Ports::NetIpMap
206 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
207 ExternalIp: {get_attr: [ExternalPort, ip_address]}
208 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
209 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
210 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
211 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
212 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
213 StorageIp: {get_attr: [StoragePort, ip_address]}
214 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
215 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
216 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
217 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
218 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
219 TenantIp: {get_attr: [TenantPort, ip_address]}
220 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
221 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
222 ManagementIp: {get_attr: [ManagementPort, ip_address]}
223 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
224 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
227 type: OS::Heat::Value
235 - - {get_attr: [CephStorage, name]}
237 - {get_param: CloudDomain}
241 - - {get_attr: [CephStorage, name]}
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]}
317 type: OS::TripleO::CephStorage::PreNetworkConfig
319 server: {get_resource: CephStorage}
322 type: OS::TripleO::SoftwareDeployment
323 depends_on: PreNetworkConfig
325 name: NetworkDeployment
326 config: {get_resource: NetworkConfig}
327 server: {get_resource: CephStorage}
328 actions: {get_param: NetworkDeploymentActions}
330 CephStorageDeployment:
331 type: OS::Heat::StructuredDeployment
332 depends_on: NetworkDeployment
334 name: CephStorageDeployment
335 config: {get_resource: CephStorageConfig}
336 server: {get_resource: CephStorage}
338 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
341 type: OS::Heat::StructuredConfig
347 - heat_config_%{::deploy_config_name}
353 - bootstrap_node # provided by allNodesConfig
354 - all_nodes # provided by allNodesConfig
355 - vip_data # provided by allNodesConfig
357 merge_behavior: deeper
360 service_names: {get_param: ServiceNames}
361 sensu::subscriptions: {get_param: MonitoringSubscriptions}
364 - {get_param: ServiceConfigSettings}
365 - values: {get_attr: [NetIpMap, net_ip_map]}
366 ceph_extraconfig: {get_param: CephStorageExtraConfig}
367 extraconfig: {get_param: ExtraConfig}
369 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
370 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
371 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
372 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
373 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
374 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
375 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
377 # Resource for site-specific injection of root certificate
379 depends_on: CephStorageDeployment
380 type: OS::TripleO::NodeTLSCAData
382 server: {get_resource: CephStorage}
384 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
385 CephStorageExtraConfigPre:
386 depends_on: CephStorageDeployment
387 type: OS::TripleO::CephStorageExtraConfigPre
389 server: {get_resource: CephStorage}
391 # Hook for site-specific additional pre-deployment config,
392 # applying to all nodes, e.g node registration/unregistration
394 depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
395 type: OS::TripleO::NodeExtraConfig
397 server: {get_resource: CephStorage}
400 type: OS::TripleO::Tasks::PackageUpdate
403 type: OS::Heat::SoftwareDeployment
405 config: {get_resource: UpdateConfig}
406 server: {get_resource: CephStorage}
409 get_param: UpdateIdentifier
413 description: IP address of the server in the ctlplane network
414 value: {get_attr: [CephStorage, networks, ctlplane, 0]}
416 description: Hostname of the server
417 value: {get_attr: [CephStorage, name]}
419 description: Mapping of network names to hostnames
421 external: {get_attr: [NetHostMap, value, external, fqdn]}
422 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
423 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
424 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
425 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
426 management: {get_attr: [NetHostMap, value, management, fqdn]}
427 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
432 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
433 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
434 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
435 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
436 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
437 TENANTIP TENANTHOST.DOMAIN TENANTHOST
438 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
439 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
441 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
442 DOMAIN: {get_param: CloudDomain}
443 PRIMARYHOST: {get_attr: [CephStorage, name]}
444 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
445 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
446 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
447 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
448 STORAGEIP: {get_attr: [StoragePort, ip_address]}
449 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
450 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
451 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
452 TENANTIP: {get_attr: [TenantPort, ip_address]}
453 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
454 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
455 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
456 CTLPLANEIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
457 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
458 nova_server_resource:
459 description: Heat resource handle for the ceph storage server
461 {get_resource: CephStorage}
463 description: IP address of the server in the external network
464 value: {get_attr: [ExternalPort, ip_address]}
465 internal_api_ip_address:
466 description: IP address of the server in the internal_api network
467 value: {get_attr: [InternalApiPort, ip_address]}
469 description: IP address of the server in the storage network
470 value: {get_attr: [StoragePort, ip_address]}
471 storage_mgmt_ip_address:
472 description: IP address of the server in the storage_mgmt network
473 value: {get_attr: [StorageMgmtPort, ip_address]}
475 description: IP address of the server in the tenant network
476 value: {get_attr: [TenantPort, ip_address]}
477 management_ip_address:
478 description: IP address of the server in the management network
479 value: {get_attr: [ManagementPort, ip_address]}