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
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}
162 # Creates the "heat-admin" user if configured via the environment
163 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
165 type: OS::TripleO::NodeAdminUserData
167 # For optional operator additional userdata
168 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
170 type: OS::TripleO::NodeUserData
173 type: OS::TripleO::CephStorage::Ports::ExternalPort
175 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
176 IPPool: {get_param: CephStorageIPs}
177 NodeIndex: {get_param: NodeIndex}
180 type: OS::TripleO::CephStorage::Ports::InternalApiPort
182 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
183 IPPool: {get_param: CephStorageIPs}
184 NodeIndex: {get_param: NodeIndex}
187 type: OS::TripleO::CephStorage::Ports::StoragePort
189 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
190 IPPool: {get_param: CephStorageIPs}
191 NodeIndex: {get_param: NodeIndex}
194 type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
196 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
197 IPPool: {get_param: CephStorageIPs}
198 NodeIndex: {get_param: NodeIndex}
201 type: OS::TripleO::CephStorage::Ports::TenantPort
203 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
204 IPPool: {get_param: CephStorageIPs}
205 NodeIndex: {get_param: NodeIndex}
208 type: OS::TripleO::CephStorage::Ports::ManagementPort
210 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
211 IPPool: {get_param: CephStorageIPs}
212 NodeIndex: {get_param: NodeIndex}
215 type: OS::TripleO::CephStorage::Net::SoftwareConfig
217 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
218 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
219 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
220 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
221 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
222 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
223 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
226 type: OS::TripleO::Network::Ports::NetIpMap
228 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
229 ExternalIp: {get_attr: [ExternalPort, ip_address]}
230 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
231 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
232 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
233 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
234 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
235 StorageIp: {get_attr: [StoragePort, ip_address]}
236 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
237 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
238 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
239 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
240 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
241 TenantIp: {get_attr: [TenantPort, ip_address]}
242 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
243 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
244 ManagementIp: {get_attr: [ManagementPort, ip_address]}
245 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
246 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
249 type: OS::Heat::Value
257 - - {get_attr: [CephStorage, name]}
259 - {get_param: CloudDomain}
263 - - {get_attr: [CephStorage, name]}
269 - - {get_attr: [CephStorage, name]}
271 - {get_param: CloudDomain}
275 - - {get_attr: [CephStorage, name]}
281 - - {get_attr: [CephStorage, name]}
283 - {get_param: CloudDomain}
287 - - {get_attr: [CephStorage, name]}
293 - - {get_attr: [CephStorage, name]}
295 - {get_param: CloudDomain}
299 - - {get_attr: [CephStorage, name]}
305 - - {get_attr: [CephStorage, name]}
307 - {get_param: CloudDomain}
311 - - {get_attr: [CephStorage, name]}
317 - - {get_attr: [CephStorage, name]}
319 - {get_param: CloudDomain}
323 - - {get_attr: [CephStorage, name]}
329 - - {get_attr: [CephStorage, name]}
331 - {get_param: CloudDomain}
335 - - {get_attr: [CephStorage, name]}
339 type: OS::TripleO::SoftwareDeployment
341 name: NetworkDeployment
342 config: {get_resource: NetworkConfig}
343 server: {get_resource: CephStorage}
344 actions: {get_param: NetworkDeploymentActions}
346 CephStorageUpgradeInitConfig:
347 type: OS::Heat::SoftwareConfig
353 - - "#!/bin/bash\n\n"
354 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
355 - get_param: UpgradeInitCommand
357 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
358 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
359 CephStorageUpgradeInitDeployment:
360 type: OS::Heat::SoftwareDeployment
361 depends_on: NetworkDeployment
363 name: CephStorageUpgradeInitDeployment
364 server: {get_resource: CephStorage}
365 config: {get_resource: CephStorageUpgradeInitConfig}
367 CephStorageDeployment:
368 type: OS::Heat::StructuredDeployment
369 depends_on: CephStorageUpgradeInitDeployment
371 name: CephStorageDeployment
372 config: {get_resource: CephStorageConfig}
373 server: {get_resource: CephStorage}
375 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
378 type: OS::Heat::StructuredConfig
384 - heat_config_%{::deploy_config_name}
390 - bootstrap_node # provided by allNodesConfig
391 - all_nodes # provided by allNodesConfig
392 - vip_data # provided by allNodesConfig
394 merge_behavior: deeper
397 service_names: {get_param: ServiceNames}
398 sensu::subscriptions: {get_param: MonitoringSubscriptions}
401 - {get_param: ServiceConfigSettings}
402 - values: {get_attr: [NetIpMap, net_ip_map]}
403 ceph_extraconfig: {get_param: CephStorageExtraConfig}
404 extraconfig: {get_param: ExtraConfig}
406 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
407 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
408 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
409 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
410 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
411 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
412 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
414 # Resource for site-specific injection of root certificate
416 depends_on: CephStorageDeployment
417 type: OS::TripleO::NodeTLSCAData
419 server: {get_resource: CephStorage}
421 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
422 CephStorageExtraConfigPre:
423 depends_on: CephStorageDeployment
424 type: OS::TripleO::CephStorageExtraConfigPre
426 server: {get_resource: CephStorage}
428 # Hook for site-specific additional pre-deployment config,
429 # applying to all nodes, e.g node registration/unregistration
431 depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
432 type: OS::TripleO::NodeExtraConfig
434 server: {get_resource: CephStorage}
437 type: OS::TripleO::Tasks::PackageUpdate
440 type: OS::Heat::SoftwareDeployment
442 config: {get_resource: UpdateConfig}
443 server: {get_resource: CephStorage}
446 get_param: UpdateIdentifier
450 description: IP address of the server in the ctlplane network
451 value: {get_attr: [CephStorage, networks, ctlplane, 0]}
453 description: Hostname of the server
454 value: {get_attr: [CephStorage, name]}
456 description: Mapping of network names to hostnames
458 external: {get_attr: [NetHostMap, value, external, fqdn]}
459 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
460 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
461 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
462 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
463 management: {get_attr: [NetHostMap, value, management, fqdn]}
464 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
469 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
470 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
471 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
472 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
473 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
474 TENANTIP TENANTHOST.DOMAIN TENANTHOST
475 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
476 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
478 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
479 DOMAIN: {get_param: CloudDomain}
480 PRIMARYHOST: {get_attr: [CephStorage, name]}
481 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
482 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
483 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
484 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
485 STORAGEIP: {get_attr: [StoragePort, ip_address]}
486 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
487 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
488 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
489 TENANTIP: {get_attr: [TenantPort, ip_address]}
490 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
491 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
492 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
493 CTLPLANEIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
494 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
495 nova_server_resource:
496 description: Heat resource handle for the ceph storage server
498 {get_resource: CephStorage}
500 description: IP address of the server in the external network
501 value: {get_attr: [ExternalPort, ip_address]}
502 internal_api_ip_address:
503 description: IP address of the server in the internal_api network
504 value: {get_attr: [InternalApiPort, ip_address]}
506 description: IP address of the server in the storage network
507 value: {get_attr: [StoragePort, ip_address]}
508 storage_mgmt_ip_address:
509 description: IP address of the server in the storage_mgmt network
510 value: {get_attr: [StorageMgmtPort, ip_address]}
512 description: IP address of the server in the tenant network
513 value: {get_attr: [TenantPort, ip_address]}
514 management_ip_address:
515 description: IP address of the server in the management network
516 value: {get_attr: [ManagementPort, ip_address]}