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.
127 type: OS::TripleO::Server
130 command: {get_param: ConfigCommand}
132 image: {get_param: CephStorageImage}
133 image_update_policy: {get_param: ImageUpdatePolicy}
134 flavor: {get_param: OvercloudCephStorageFlavor}
135 key_name: {get_param: KeyName}
138 user_data_format: SOFTWARE_CONFIG
139 user_data: {get_resource: UserData}
142 template: {get_param: Hostname}
143 params: {get_param: HostnameMap}
144 software_config_transport: {get_param: SoftwareConfigTransport}
147 - {get_param: ServerMetadata}
148 - {get_param: CephStorageServerMetadata}
149 - {get_param: ServiceMetadataSettings}
150 scheduler_hints: {get_param: CephStorageSchedulerHints}
152 # Combine the NodeAdminUserData and NodeUserData mime archives
154 type: OS::Heat::MultipartMime
157 - config: {get_resource: NodeAdminUserData}
159 - config: {get_resource: NodeUserData}
161 - config: {get_resource: RoleUserData}
164 # Creates the "heat-admin" user if configured via the environment
165 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
167 type: OS::TripleO::NodeAdminUserData
169 # For optional operator additional userdata
170 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
172 type: OS::TripleO::NodeUserData
174 # For optional operator role-specific userdata
175 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
177 type: OS::TripleO::CephStorage::NodeUserData
180 type: OS::TripleO::CephStorage::Ports::ExternalPort
182 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
183 IPPool: {get_param: CephStorageIPs}
184 NodeIndex: {get_param: NodeIndex}
187 type: OS::TripleO::CephStorage::Ports::InternalApiPort
189 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
190 IPPool: {get_param: CephStorageIPs}
191 NodeIndex: {get_param: NodeIndex}
194 type: OS::TripleO::CephStorage::Ports::StoragePort
196 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
197 IPPool: {get_param: CephStorageIPs}
198 NodeIndex: {get_param: NodeIndex}
201 type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
203 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
204 IPPool: {get_param: CephStorageIPs}
205 NodeIndex: {get_param: NodeIndex}
208 type: OS::TripleO::CephStorage::Ports::TenantPort
210 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
211 IPPool: {get_param: CephStorageIPs}
212 NodeIndex: {get_param: NodeIndex}
215 type: OS::TripleO::CephStorage::Ports::ManagementPort
217 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
218 IPPool: {get_param: CephStorageIPs}
219 NodeIndex: {get_param: NodeIndex}
222 type: OS::TripleO::CephStorage::Net::SoftwareConfig
224 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
225 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
226 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
227 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
228 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
229 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
230 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
233 type: OS::TripleO::Network::Ports::NetIpMap
235 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
236 ExternalIp: {get_attr: [ExternalPort, ip_address]}
237 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
238 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
239 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
240 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
241 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
242 StorageIp: {get_attr: [StoragePort, ip_address]}
243 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
244 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
245 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
246 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
247 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
248 TenantIp: {get_attr: [TenantPort, ip_address]}
249 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
250 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
251 ManagementIp: {get_attr: [ManagementPort, ip_address]}
252 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
253 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
256 type: OS::Heat::Value
264 - - {get_attr: [CephStorage, name]}
266 - {get_param: CloudDomain}
270 - - {get_attr: [CephStorage, name]}
276 - - {get_attr: [CephStorage, name]}
278 - {get_param: CloudDomain}
282 - - {get_attr: [CephStorage, name]}
288 - - {get_attr: [CephStorage, name]}
290 - {get_param: CloudDomain}
294 - - {get_attr: [CephStorage, name]}
300 - - {get_attr: [CephStorage, name]}
302 - {get_param: CloudDomain}
306 - - {get_attr: [CephStorage, name]}
312 - - {get_attr: [CephStorage, name]}
314 - {get_param: CloudDomain}
318 - - {get_attr: [CephStorage, name]}
324 - - {get_attr: [CephStorage, name]}
326 - {get_param: CloudDomain}
330 - - {get_attr: [CephStorage, name]}
336 - - {get_attr: [CephStorage, name]}
338 - {get_param: CloudDomain}
342 - - {get_attr: [CephStorage, name]}
346 type: OS::TripleO::SoftwareDeployment
348 name: NetworkDeployment
349 config: {get_resource: NetworkConfig}
350 server: {get_resource: CephStorage}
351 actions: {get_param: NetworkDeploymentActions}
353 CephStorageUpgradeInitConfig:
354 type: OS::Heat::SoftwareConfig
360 - - "#!/bin/bash\n\n"
361 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
362 - get_param: UpgradeInitCommand
364 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
365 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
366 CephStorageUpgradeInitDeployment:
367 type: OS::Heat::SoftwareDeployment
368 depends_on: NetworkDeployment
370 name: CephStorageUpgradeInitDeployment
371 server: {get_resource: CephStorage}
372 config: {get_resource: CephStorageUpgradeInitConfig}
374 CephStorageDeployment:
375 type: OS::Heat::StructuredDeployment
376 depends_on: CephStorageUpgradeInitDeployment
378 name: CephStorageDeployment
379 config: {get_resource: CephStorageConfig}
380 server: {get_resource: CephStorage}
382 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
385 type: OS::Heat::StructuredConfig
391 - heat_config_%{::deploy_config_name}
397 - bootstrap_node # provided by allNodesConfig
398 - all_nodes # provided by allNodesConfig
399 - vip_data # provided by allNodesConfig
401 merge_behavior: deeper
404 service_names: {get_param: ServiceNames}
405 sensu::subscriptions: {get_param: MonitoringSubscriptions}
408 - {get_param: ServiceConfigSettings}
409 - values: {get_attr: [NetIpMap, net_ip_map]}
410 ceph_extraconfig: {get_param: CephStorageExtraConfig}
411 extraconfig: {get_param: ExtraConfig}
413 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
414 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
415 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
416 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
417 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
418 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
419 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
421 # Resource for site-specific injection of root certificate
423 depends_on: CephStorageDeployment
424 type: OS::TripleO::NodeTLSCAData
426 server: {get_resource: CephStorage}
428 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
429 CephStorageExtraConfigPre:
430 depends_on: CephStorageDeployment
431 type: OS::TripleO::CephStorageExtraConfigPre
433 server: {get_resource: CephStorage}
435 # Hook for site-specific additional pre-deployment config,
436 # applying to all nodes, e.g node registration/unregistration
438 depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
439 type: OS::TripleO::NodeExtraConfig
441 server: {get_resource: CephStorage}
444 type: OS::TripleO::Tasks::PackageUpdate
447 type: OS::Heat::SoftwareDeployment
449 config: {get_resource: UpdateConfig}
450 server: {get_resource: CephStorage}
453 get_param: UpdateIdentifier
457 description: IP address of the server in the ctlplane network
458 value: {get_attr: [CephStorage, networks, ctlplane, 0]}
460 description: Hostname of the server
461 value: {get_attr: [CephStorage, name]}
463 description: Mapping of network names to hostnames
465 external: {get_attr: [NetHostMap, value, external, fqdn]}
466 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
467 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
468 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
469 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
470 management: {get_attr: [NetHostMap, value, management, fqdn]}
471 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
476 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
477 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
478 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
479 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
480 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
481 TENANTIP TENANTHOST.DOMAIN TENANTHOST
482 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
483 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
485 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
486 DOMAIN: {get_param: CloudDomain}
487 PRIMARYHOST: {get_attr: [CephStorage, name]}
488 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
489 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
490 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
491 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
492 STORAGEIP: {get_attr: [StoragePort, ip_address]}
493 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
494 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
495 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
496 TENANTIP: {get_attr: [TenantPort, ip_address]}
497 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
498 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
499 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
500 CTLPLANEIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
501 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
502 nova_server_resource:
503 description: Heat resource handle for the ceph storage server
505 {get_resource: CephStorage}
507 description: IP address of the server in the external network
508 value: {get_attr: [ExternalPort, ip_address]}
509 internal_api_ip_address:
510 description: IP address of the server in the internal_api network
511 value: {get_attr: [InternalApiPort, ip_address]}
513 description: IP address of the server in the storage network
514 value: {get_attr: [StoragePort, ip_address]}
515 storage_mgmt_ip_address:
516 description: IP address of the server in the storage_mgmt network
517 value: {get_attr: [StorageMgmtPort, ip_address]}
519 description: IP address of the server in the tenant network
520 value: {get_attr: [TenantPort, ip_address]}
521 management_ip_address:
522 description: IP address of the server in the management network
523 value: {get_attr: [ManagementPort, ip_address]}