1 heat_template_version: 2015-04-30
2 description: 'OpenStack ceph storage node configured by Puppet'
5 description: Flavor for the Ceph Storage node.
8 - custom_constraint: nova.flavor
11 default: overcloud-ceph-storage
13 - custom_constraint: glance.image
15 default: 'REBUILD_PRESERVE_EPHEMERAL'
16 description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
19 description: Name of an existing Nova key pair to enable SSH access to the instances
23 - custom_constraint: nova.keypair
26 description: Set to true to enable package installation via Puppet
30 description: Mapping of service_name -> network name. Typically set
31 via parameter_defaults in the resource registry.
35 description: The timezone to be set on Ceph nodes.
41 Setting to a previously unused value during stack-update will trigger
42 package update on all nodes
45 default: '' # Defaults to Heat created hostname
49 description: Optional mapping to override hostnames
53 Additional hiera configuration to inject into the cluster. Note
54 that CephStorageExtraConfig takes precedence over ExtraConfig.
56 CephStorageExtraConfig:
59 Role specific additional hiera configuration to inject into the cluster.
64 NetworkDeploymentActions:
65 type: comma_delimited_list
67 Heat action when to apply network configuration changes
69 SoftwareConfigTransport:
70 default: POLL_SERVER_CFN
72 How the server should receive the metadata required for software configuration.
75 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
80 The DNS domain used for the hosts. This should match the dhcp_domain
81 configured in the Undercloud neutron. Defaults to localdomain.
85 Extra properties or metadata passed to Nova for the created nodes in
86 the overcloud. It's accessible via the Nova metadata API.
90 description: Optional scheduler hints to pass to nova
95 ServiceConfigSettings:
101 type: OS::Nova::Server
103 image: {get_param: Image}
104 image_update_policy: {get_param: ImageUpdatePolicy}
105 flavor: {get_param: Flavor}
106 key_name: {get_param: KeyName}
109 user_data_format: SOFTWARE_CONFIG
110 user_data: {get_resource: UserData}
113 template: {get_param: Hostname}
114 params: {get_param: HostnameMap}
115 software_config_transport: {get_param: SoftwareConfigTransport}
116 metadata: {get_param: ServerMetadata}
117 scheduler_hints: {get_param: SchedulerHints}
119 # Combine the NodeAdminUserData and NodeUserData mime archives
121 type: OS::Heat::MultipartMime
124 - config: {get_resource: NodeAdminUserData}
126 - config: {get_resource: NodeUserData}
129 # Creates the "heat-admin" user if configured via the environment
130 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
132 type: OS::TripleO::NodeAdminUserData
134 # For optional operator additional userdata
135 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
137 type: OS::TripleO::NodeUserData
140 type: OS::TripleO::CephStorage::Ports::ExternalPort
142 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
143 IPPool: {get_param: CephStorageIPs}
144 NodeIndex: {get_param: NodeIndex}
147 type: OS::TripleO::CephStorage::Ports::InternalApiPort
149 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
150 IPPool: {get_param: CephStorageIPs}
151 NodeIndex: {get_param: NodeIndex}
154 type: OS::TripleO::CephStorage::Ports::StoragePort
156 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
157 IPPool: {get_param: CephStorageIPs}
158 NodeIndex: {get_param: NodeIndex}
161 type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
163 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
164 IPPool: {get_param: CephStorageIPs}
165 NodeIndex: {get_param: NodeIndex}
168 type: OS::TripleO::CephStorage::Ports::TenantPort
170 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
171 IPPool: {get_param: CephStorageIPs}
172 NodeIndex: {get_param: NodeIndex}
175 type: OS::TripleO::CephStorage::Ports::ManagementPort
177 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
178 IPPool: {get_param: CephStorageIPs}
179 NodeIndex: {get_param: NodeIndex}
182 type: OS::TripleO::CephStorage::Net::SoftwareConfig
184 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
185 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
186 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
187 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
188 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
189 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
190 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
193 type: OS::TripleO::Network::Ports::NetIpMap
195 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
196 ExternalIp: {get_attr: [ExternalPort, ip_address]}
197 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
198 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
199 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
200 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
201 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
202 StorageIp: {get_attr: [StoragePort, ip_address]}
203 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
204 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
205 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
206 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
207 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
208 TenantIp: {get_attr: [TenantPort, ip_address]}
209 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
210 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
211 ManagementIp: {get_attr: [ManagementPort, ip_address]}
212 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
213 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
216 type: OS::TripleO::SoftwareDeployment
218 name: NetworkDeployment
219 config: {get_resource: NetworkConfig}
220 server: {get_resource: CephStorage}
221 actions: {get_param: NetworkDeploymentActions}
223 CephStorageDeployment:
224 type: OS::Heat::StructuredDeployment
225 depends_on: NetworkDeployment
227 name: CephStorageDeployment
228 config: {get_resource: CephStorageConfig}
229 server: {get_resource: CephStorage}
231 timezone: {get_param: TimeZone}
232 enable_package_install: {get_param: EnablePackageInstall}
233 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
234 ceph_cluster_network: {get_attr: [NetIpMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
235 ceph_public_network: {get_attr: [NetIpMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
238 type: OS::Heat::StructuredConfig
240 group: os-apply-config
245 - heat_config_%{::deploy_config_name}
249 - ceph_cluster # provided by CephClusterConfig
254 merge_behavior: deeper
257 mapped_data: {get_param: ServiceConfigSettings}
259 raw_data: {get_file: hieradata/common.yaml}
262 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
263 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
264 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
266 mapped_data: {get_param: CephStorageExtraConfig}
268 mapped_data: {get_param: ExtraConfig}
270 raw_data: {get_file: hieradata/ceph.yaml}
272 timezone::timezone: {get_input: timezone}
273 tripleo::packages::enable_install: {get_input: enable_package_install}
274 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
275 ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
276 ceph::profile::params::public_network: {get_input: ceph_public_network}
278 # Resource for site-specific injection of root certificate
280 depends_on: CephStorageDeployment
281 type: OS::TripleO::NodeTLSCAData
283 server: {get_resource: CephStorage}
285 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
286 CephStorageExtraConfigPre:
287 depends_on: CephStorageDeployment
288 type: OS::TripleO::CephStorageExtraConfigPre
290 server: {get_resource: CephStorage}
292 # Hook for site-specific additional pre-deployment config,
293 # applying to all nodes, e.g node registration/unregistration
295 depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
296 type: OS::TripleO::NodeExtraConfig
298 server: {get_resource: CephStorage}
301 type: OS::TripleO::Tasks::PackageUpdate
304 type: OS::Heat::SoftwareDeployment
306 config: {get_resource: UpdateConfig}
307 server: {get_resource: CephStorage}
310 get_param: UpdateIdentifier
317 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
318 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
319 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
320 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
321 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
322 TENANTIP TENANTHOST.DOMAIN TENANTHOST
323 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
325 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
326 DOMAIN: {get_param: CloudDomain}
327 PRIMARYHOST: {get_attr: [CephStorage, name]}
328 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
332 - - {get_attr: [CephStorage, name]}
334 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
338 - - {get_attr: [CephStorage, name]}
340 STORAGEIP: {get_attr: [StoragePort, ip_address]}
344 - - {get_attr: [CephStorage, name]}
346 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
350 - - {get_attr: [CephStorage, name]}
352 TENANTIP: {get_attr: [TenantPort, ip_address]}
356 - - {get_attr: [CephStorage, name]}
358 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
362 - - {get_attr: [CephStorage, name]}
364 nova_server_resource:
365 description: Heat resource handle for the ceph storage server
367 {get_resource: CephStorage}
369 description: IP address of the server in the external network
370 value: {get_attr: [ExternalPort, ip_address]}
371 internal_api_ip_address:
372 description: IP address of the server in the internal_api network
373 value: {get_attr: [InternalApiPort, ip_address]}
375 description: IP address of the server in the storage network
376 value: {get_attr: [StoragePort, ip_address]}
377 storage_mgmt_ip_address:
378 description: IP address of the server in the storage_mgmt network
379 value: {get_attr: [StorageMgmtPort, ip_address]}
381 description: IP address of the server in the tenant network
382 value: {get_attr: [TenantPort, ip_address]}
383 management_ip_address:
384 description: IP address of the server in the management network
385 value: {get_attr: [ManagementPort, ip_address]}
387 description: identifier which changes if the node configuration may need re-applying
391 - - {get_attr: [CephStorageDeployment, deploy_stdout]}
392 - {get_attr: [NodeTLSCAData, deploy_stdout]}
393 - {get_attr: [CephStorageExtraConfigPre, deploy_stdout]}
394 - {get_param: UpdateIdentifier}