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 Command or script snippet to run on all overcloud nodes to
119 initialize the upgrade process. E.g. a repository switch.
124 type: OS::TripleO::Server
127 command: {get_param: ConfigCommand}
129 image: {get_param: CephStorageImage}
130 image_update_policy: {get_param: ImageUpdatePolicy}
131 flavor: {get_param: OvercloudCephStorageFlavor}
132 key_name: {get_param: KeyName}
135 user_data_format: SOFTWARE_CONFIG
136 user_data: {get_resource: UserData}
139 template: {get_param: Hostname}
140 params: {get_param: HostnameMap}
141 software_config_transport: {get_param: SoftwareConfigTransport}
144 - {get_param: ServerMetadata}
145 - {get_param: CephStorageServerMetadata}
146 scheduler_hints: {get_param: CephStorageSchedulerHints}
148 # Combine the NodeAdminUserData and NodeUserData mime archives
150 type: OS::Heat::MultipartMime
153 - config: {get_resource: NodeAdminUserData}
155 - config: {get_resource: NodeUserData}
158 # Creates the "heat-admin" user if configured via the environment
159 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
161 type: OS::TripleO::NodeAdminUserData
163 # For optional operator additional userdata
164 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
166 type: OS::TripleO::NodeUserData
169 type: OS::TripleO::CephStorage::Ports::ExternalPort
171 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
172 IPPool: {get_param: CephStorageIPs}
173 NodeIndex: {get_param: NodeIndex}
176 type: OS::TripleO::CephStorage::Ports::InternalApiPort
178 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
179 IPPool: {get_param: CephStorageIPs}
180 NodeIndex: {get_param: NodeIndex}
183 type: OS::TripleO::CephStorage::Ports::StoragePort
185 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
186 IPPool: {get_param: CephStorageIPs}
187 NodeIndex: {get_param: NodeIndex}
190 type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
192 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
193 IPPool: {get_param: CephStorageIPs}
194 NodeIndex: {get_param: NodeIndex}
197 type: OS::TripleO::CephStorage::Ports::TenantPort
199 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
200 IPPool: {get_param: CephStorageIPs}
201 NodeIndex: {get_param: NodeIndex}
204 type: OS::TripleO::CephStorage::Ports::ManagementPort
206 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
207 IPPool: {get_param: CephStorageIPs}
208 NodeIndex: {get_param: NodeIndex}
211 type: OS::TripleO::CephStorage::Net::SoftwareConfig
213 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
214 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
215 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
216 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
217 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
218 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
219 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
222 type: OS::TripleO::Network::Ports::NetIpMap
224 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
225 ExternalIp: {get_attr: [ExternalPort, ip_address]}
226 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
227 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
228 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
229 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
230 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
231 StorageIp: {get_attr: [StoragePort, ip_address]}
232 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
233 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
234 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
235 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
236 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
237 TenantIp: {get_attr: [TenantPort, ip_address]}
238 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
239 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
240 ManagementIp: {get_attr: [ManagementPort, ip_address]}
241 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
242 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
245 type: OS::Heat::Value
253 - - {get_attr: [CephStorage, name]}
255 - {get_param: CloudDomain}
259 - - {get_attr: [CephStorage, name]}
265 - - {get_attr: [CephStorage, name]}
267 - {get_param: CloudDomain}
271 - - {get_attr: [CephStorage, name]}
277 - - {get_attr: [CephStorage, name]}
279 - {get_param: CloudDomain}
283 - - {get_attr: [CephStorage, name]}
289 - - {get_attr: [CephStorage, name]}
291 - {get_param: CloudDomain}
295 - - {get_attr: [CephStorage, name]}
301 - - {get_attr: [CephStorage, name]}
303 - {get_param: CloudDomain}
307 - - {get_attr: [CephStorage, name]}
313 - - {get_attr: [CephStorage, name]}
315 - {get_param: CloudDomain}
319 - - {get_attr: [CephStorage, name]}
325 - - {get_attr: [CephStorage, name]}
327 - {get_param: CloudDomain}
331 - - {get_attr: [CephStorage, name]}
335 type: OS::TripleO::SoftwareDeployment
337 name: NetworkDeployment
338 config: {get_resource: NetworkConfig}
339 server: {get_resource: CephStorage}
340 actions: {get_param: NetworkDeploymentActions}
342 CephStorageUpgradeInitConfig:
343 type: OS::Heat::SoftwareConfig
349 - - "#!/bin/bash\n\n"
350 - "if [[ -f /etc/resolv.conf.save ]] ; then rm /etc/resolv.conf.save; fi\n\n"
351 - get_param: UpgradeInitCommand
353 # Note we may be able to make this conditional on UpgradeInitCommandNotEmpty
354 # but https://bugs.launchpad.net/heat/+bug/1649900 needs fixing first
355 CephStorageUpgradeInitDeployment:
356 type: OS::Heat::SoftwareDeployment
357 depends_on: NetworkDeployment
359 name: CephStorageUpgradeInitDeployment
360 server: {get_resource: CephStorage}
361 config: {get_resource: CephStorageUpgradeInitConfig}
363 CephStorageDeployment:
364 type: OS::Heat::StructuredDeployment
365 depends_on: CephStorageUpgradeInitDeployment
367 name: CephStorageDeployment
368 config: {get_resource: CephStorageConfig}
369 server: {get_resource: CephStorage}
371 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
374 type: OS::Heat::StructuredConfig
380 - heat_config_%{::deploy_config_name}
386 - bootstrap_node # provided by allNodesConfig
387 - all_nodes # provided by allNodesConfig
388 - vip_data # provided by allNodesConfig
390 merge_behavior: deeper
393 service_names: {get_param: ServiceNames}
394 sensu::subscriptions: {get_param: MonitoringSubscriptions}
397 - {get_param: ServiceConfigSettings}
398 - values: {get_attr: [NetIpMap, net_ip_map]}
399 ceph_extraconfig: {get_param: CephStorageExtraConfig}
400 extraconfig: {get_param: ExtraConfig}
402 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
403 fqdn_internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
404 fqdn_storage: {get_attr: [NetHostMap, value, storage, fqdn]}
405 fqdn_storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
406 fqdn_tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
407 fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
408 fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
410 # Resource for site-specific injection of root certificate
412 depends_on: CephStorageDeployment
413 type: OS::TripleO::NodeTLSCAData
415 server: {get_resource: CephStorage}
417 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
418 CephStorageExtraConfigPre:
419 depends_on: CephStorageDeployment
420 type: OS::TripleO::CephStorageExtraConfigPre
422 server: {get_resource: CephStorage}
424 # Hook for site-specific additional pre-deployment config,
425 # applying to all nodes, e.g node registration/unregistration
427 depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
428 type: OS::TripleO::NodeExtraConfig
430 server: {get_resource: CephStorage}
433 type: OS::TripleO::Tasks::PackageUpdate
436 type: OS::Heat::SoftwareDeployment
438 config: {get_resource: UpdateConfig}
439 server: {get_resource: CephStorage}
442 get_param: UpdateIdentifier
446 description: IP address of the server in the ctlplane network
447 value: {get_attr: [CephStorage, networks, ctlplane, 0]}
449 description: Hostname of the server
450 value: {get_attr: [CephStorage, name]}
452 description: Mapping of network names to hostnames
454 external: {get_attr: [NetHostMap, value, external, fqdn]}
455 internal_api: {get_attr: [NetHostMap, value, internal_api, fqdn]}
456 storage: {get_attr: [NetHostMap, value, storage, fqdn]}
457 storage_mgmt: {get_attr: [NetHostMap, value, storage_mgmt, fqdn]}
458 tenant: {get_attr: [NetHostMap, value, tenant, fqdn]}
459 management: {get_attr: [NetHostMap, value, management, fqdn]}
460 ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
465 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
466 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
467 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
468 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
469 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
470 TENANTIP TENANTHOST.DOMAIN TENANTHOST
471 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
472 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
474 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
475 DOMAIN: {get_param: CloudDomain}
476 PRIMARYHOST: {get_attr: [CephStorage, name]}
477 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
478 EXTERNALHOST: {get_attr: [NetHostMap, value, external, short]}
479 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
480 INTERNAL_APIHOST: {get_attr: [NetHostMap, value, internal_api, short]}
481 STORAGEIP: {get_attr: [StoragePort, ip_address]}
482 STORAGEHOST: {get_attr: [NetHostMap, value, storage, short]}
483 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
484 STORAGE_MGMTHOST: {get_attr: [NetHostMap, value, storage_mgmt, short]}
485 TENANTIP: {get_attr: [TenantPort, ip_address]}
486 TENANTHOST: {get_attr: [NetHostMap, value, tenant, short]}
487 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
488 MANAGEMENTHOST: {get_attr: [NetHostMap, value, management, short]}
489 CTLPLANEIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
490 CTLPLANEHOST: {get_attr: [NetHostMap, value, ctlplane, short]}
491 nova_server_resource:
492 description: Heat resource handle for the ceph storage server
494 {get_resource: CephStorage}
496 description: IP address of the server in the external network
497 value: {get_attr: [ExternalPort, ip_address]}
498 internal_api_ip_address:
499 description: IP address of the server in the internal_api network
500 value: {get_attr: [InternalApiPort, ip_address]}
502 description: IP address of the server in the storage network
503 value: {get_attr: [StoragePort, ip_address]}
504 storage_mgmt_ip_address:
505 description: IP address of the server in the storage_mgmt network
506 value: {get_attr: [StorageMgmtPort, ip_address]}
508 description: IP address of the server in the tenant network
509 value: {get_attr: [TenantPort, ip_address]}
510 management_ip_address:
511 description: IP address of the server in the management network
512 value: {get_attr: [ManagementPort, ip_address]}