1 heat_template_version: ocata
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
111 ServiceMetadataSettings:
116 description: Command which will be run whenever configuration data changes
117 default: os-refresh-config --timeout 14400
121 Command or script snippet to run on all overcloud nodes to
122 initialize the upgrade process. E.g. a repository switch.
124 UpgradeInitCommonCommand:
127 Common commands required by the upgrades process. This should not
128 normally be modified by the operator and is set and unset in the
129 major-upgrade-composable-steps.yaml and major-upgrade-converge.yaml
135 type: OS::TripleO::Server
138 command: {get_param: ConfigCommand}
140 image: {get_param: CephStorageImage}
141 image_update_policy: {get_param: ImageUpdatePolicy}
142 flavor: {get_param: OvercloudCephStorageFlavor}
143 key_name: {get_param: KeyName}
146 user_data_format: SOFTWARE_CONFIG
147 user_data: {get_resource: UserData}
150 template: {get_param: Hostname}
151 params: {get_param: HostnameMap}
152 software_config_transport: {get_param: SoftwareConfigTransport}
155 - {get_param: ServerMetadata}
156 - {get_param: CephStorageServerMetadata}
157 - {get_param: ServiceMetadataSettings}
158 scheduler_hints: {get_param: CephStorageSchedulerHints}
160 # Combine the NodeAdminUserData and NodeUserData mime archives
162 type: OS::Heat::MultipartMime
165 - config: {get_resource: NodeAdminUserData}
167 - config: {get_resource: NodeUserData}
169 - config: {get_resource: RoleUserData}
172 # Creates the "heat-admin" user if configured via the environment
173 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
175 type: OS::TripleO::NodeAdminUserData
177 # For optional operator additional userdata
178 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
180 type: OS::TripleO::NodeUserData
182 # For optional operator role-specific userdata
183 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
185 type: OS::TripleO::CephStorage::NodeUserData
188 type: OS::TripleO::CephStorage::Ports::ExternalPort
190 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
191 IPPool: {get_param: CephStorageIPs}
192 NodeIndex: {get_param: NodeIndex}
195 type: OS::TripleO::CephStorage::Ports::InternalApiPort
197 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
198 IPPool: {get_param: CephStorageIPs}
199 NodeIndex: {get_param: NodeIndex}
202 type: OS::TripleO::CephStorage::Ports::StoragePort
204 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
205 IPPool: {get_param: CephStorageIPs}
206 NodeIndex: {get_param: NodeIndex}
209 type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
211 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
212 IPPool: {get_param: CephStorageIPs}
213 NodeIndex: {get_param: NodeIndex}
216 type: OS::TripleO::CephStorage::Ports::TenantPort
218 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
219 IPPool: {get_param: CephStorageIPs}
220 NodeIndex: {get_param: NodeIndex}
223 type: OS::TripleO::CephStorage::Ports::ManagementPort
225 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
226 IPPool: {get_param: CephStorageIPs}
227 NodeIndex: {get_param: NodeIndex}
230 type: OS::TripleO::CephStorage::Net::SoftwareConfig
232 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
233 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
234 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
235 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
236 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
237 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
238 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
241 type: OS::TripleO::Network::Ports::NetIpMap
243 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
244 ExternalIp: {get_attr: [ExternalPort, ip_address]}
245 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
246 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
247 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
248 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
249 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
250 StorageIp: {get_attr: [StoragePort, ip_address]}
251 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
252 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
253 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
254 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
255 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
256 TenantIp: {get_attr: [TenantPort, ip_address]}
257 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
258 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
259 ManagementIp: {get_attr: [ManagementPort, ip_address]}
260 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
261 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
264 type: OS::Heat::Value
272 - - {get_attr: [CephStorage, name]}
274 - {get_param: CloudDomain}
278 - - {get_attr: [CephStorage, name]}
284 - - {get_attr: [CephStorage, name]}
286 - {get_param: CloudDomain}
290 - - {get_attr: [CephStorage, name]}
296 - - {get_attr: [CephStorage, name]}
298 - {get_param: CloudDomain}
302 - - {get_attr: [CephStorage, name]}
308 - - {get_attr: [CephStorage, name]}
310 - {get_param: CloudDomain}
314 - - {get_attr: [CephStorage, name]}
320 - - {get_attr: [CephStorage, name]}
322 - {get_param: CloudDomain}
326 - - {get_attr: [CephStorage, name]}
332 - - {get_attr: [CephStorage, name]}
334 - {get_param: CloudDomain}
338 - - {get_attr: [CephStorage, name]}
344 - - {get_attr: [CephStorage, name]}
346 - {get_param: CloudDomain}
350 - - {get_attr: [CephStorage, name]}
354 type: OS::TripleO::CephStorage::PreNetworkConfig
356 server: {get_resource: CephStorage}
359 type: OS::TripleO::SoftwareDeployment
360 depends_on: PreNetworkConfig
362 name: NetworkDeployment
363 config: {get_resource: NetworkConfig}
364 server: {get_resource: CephStorage}
365 actions: {get_param: NetworkDeploymentActions}
367 CephStorageUpgradeInitConfig:
368 type: OS::Heat::SoftwareConfig
374 - - "#!/bin/bash\n\n"
375 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
376 - get_param: UpgradeInitCommand
377 - get_param: UpgradeInitCommonCommand
379 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
380 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
381 CephStorageUpgradeInitDeployment:
382 type: OS::Heat::SoftwareDeployment
383 depends_on: NetworkDeployment
385 name: CephStorageUpgradeInitDeployment
386 server: {get_resource: CephStorage}
387 config: {get_resource: CephStorageUpgradeInitConfig}
389 CephStorageDeployment:
390 type: OS::Heat::StructuredDeployment
391 depends_on: CephStorageUpgradeInitDeployment
393 name: CephStorageDeployment
394 config: {get_resource: CephStorageConfig}
395 server: {get_resource: CephStorage}
397 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
400 type: OS::Heat::StructuredConfig
406 - heat_config_%{::deploy_config_name}
412 - bootstrap_node # provided by allNodesConfig
413 - all_nodes # provided by allNodesConfig
414 - vip_data # provided by allNodesConfig
416 merge_behavior: deeper
419 service_names: {get_param: ServiceNames}
420 sensu::subscriptions: {get_param: MonitoringSubscriptions}
423 - {get_param: ServiceConfigSettings}
424 - values: {get_attr: [NetIpMap, net_ip_map]}
425 ceph_extraconfig: {get_param: CephStorageExtraConfig}
426 extraconfig: {get_param: ExtraConfig}
428 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
429 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
430 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
431 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
432 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
433 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
434 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
436 # Resource for site-specific injection of root certificate
438 depends_on: CephStorageDeployment
439 type: OS::TripleO::NodeTLSCAData
441 server: {get_resource: CephStorage}
443 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
444 CephStorageExtraConfigPre:
445 depends_on: CephStorageDeployment
446 type: OS::TripleO::CephStorageExtraConfigPre
448 server: {get_resource: CephStorage}
450 # Hook for site-specific additional pre-deployment config,
451 # applying to all nodes, e.g node registration/unregistration
453 depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
454 type: OS::TripleO::NodeExtraConfig
456 server: {get_resource: CephStorage}
459 type: OS::TripleO::Tasks::PackageUpdate
462 type: OS::Heat::SoftwareDeployment
463 depends_on: NetworkDeployment
465 config: {get_resource: UpdateConfig}
466 server: {get_resource: CephStorage}
469 get_param: UpdateIdentifier
473 description: IP address of the server in the ctlplane network
474 value: {get_attr: [CephStorage, networks, ctlplane, 0]}
476 description: Hostname of the server
477 value: {get_attr: [CephStorage, name]}
479 description: Mapping of network names to hostnames
481 external: {get_attr: [NetHostMap, value, external, fqdn]}
482 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
483 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
484 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
485 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
486 management: {get_attr: [NetHostMap, value, management, fqdn]}
487 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
492 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
493 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
494 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
495 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
496 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
497 TENANTIP TENANTHOST.DOMAIN TENANTHOST
498 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
499 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
501 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
502 DOMAIN: {get_param: CloudDomain}
503 PRIMARYHOST: {get_attr: [CephStorage, name]}
504 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
505 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
506 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
507 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
508 STORAGEIP: {get_attr: [StoragePort, ip_address]}
509 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
510 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
511 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
512 TENANTIP: {get_attr: [TenantPort, ip_address]}
513 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
514 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
515 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
516 CTLPLANEIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
517 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
518 nova_server_resource:
519 description: Heat resource handle for the ceph storage server
521 {get_resource: CephStorage}
523 description: IP address of the server in the external network
524 value: {get_attr: [ExternalPort, ip_address]}
525 internal_api_ip_address:
526 description: IP address of the server in the internal_api network
527 value: {get_attr: [InternalApiPort, ip_address]}
529 description: IP address of the server in the storage network
530 value: {get_attr: [StoragePort, ip_address]}
531 storage_mgmt_ip_address:
532 description: IP address of the server in the storage_mgmt network
533 value: {get_attr: [StorageMgmtPort, ip_address]}
535 description: IP address of the server in the tenant network
536 value: {get_attr: [TenantPort, ip_address]}
537 management_ip_address:
538 description: IP address of the server in the management network
539 value: {get_attr: [ManagementPort, ip_address]}