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: Comma-separated list of ntp servers
27 type: comma_delimited_list
30 description: Set to true to enable package installation via Puppet
34 description: Mapping of service_name -> network name. Typically set
35 via parameter_defaults in the resource registry.
39 description: The timezone to be set on Ceph nodes.
45 Setting to a previously unused value during stack-update will trigger
46 package update on all nodes
49 default: '' # Defaults to Heat created hostname
53 description: Optional mapping to override hostnames
57 Additional hiera configuration to inject into the cluster. Note
58 that CephStorageExtraConfig takes precedence over ExtraConfig.
60 CephStorageExtraConfig:
63 Role specific additional hiera configuration to inject into the cluster.
68 NetworkDeploymentActions:
69 type: comma_delimited_list
71 Heat action when to apply network configuration changes
73 SoftwareConfigTransport:
74 default: POLL_SERVER_CFN
76 How the server should receive the metadata required for software configuration.
79 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
84 The DNS domain used for the hosts. This should match the dhcp_domain
85 configured in the Undercloud neutron. Defaults to localdomain.
89 Extra properties or metadata passed to Nova for the created nodes in
90 the overcloud. It's accessible via the Nova metadata API.
94 description: Optional scheduler hints to pass to nova
102 type: OS::Nova::Server
104 image: {get_param: Image}
105 image_update_policy: {get_param: ImageUpdatePolicy}
106 flavor: {get_param: Flavor}
107 key_name: {get_param: KeyName}
110 user_data_format: SOFTWARE_CONFIG
111 user_data: {get_resource: UserData}
114 template: {get_param: Hostname}
115 params: {get_param: HostnameMap}
116 software_config_transport: {get_param: SoftwareConfigTransport}
117 metadata: {get_param: ServerMetadata}
118 scheduler_hints: {get_param: SchedulerHints}
120 # Combine the NodeAdminUserData and NodeUserData mime archives
122 type: OS::Heat::MultipartMime
125 - config: {get_resource: NodeAdminUserData}
127 - config: {get_resource: NodeUserData}
130 # Creates the "heat-admin" user if configured via the environment
131 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
133 type: OS::TripleO::NodeAdminUserData
135 # For optional operator additional userdata
136 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
138 type: OS::TripleO::NodeUserData
141 type: OS::TripleO::CephStorage::Ports::ExternalPort
143 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
144 IPPool: {get_param: CephStorageIPs}
145 NodeIndex: {get_param: NodeIndex}
148 type: OS::TripleO::CephStorage::Ports::InternalApiPort
150 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
151 IPPool: {get_param: CephStorageIPs}
152 NodeIndex: {get_param: NodeIndex}
155 type: OS::TripleO::CephStorage::Ports::StoragePort
157 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
158 IPPool: {get_param: CephStorageIPs}
159 NodeIndex: {get_param: NodeIndex}
162 type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
164 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
165 IPPool: {get_param: CephStorageIPs}
166 NodeIndex: {get_param: NodeIndex}
169 type: OS::TripleO::CephStorage::Ports::TenantPort
171 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
172 IPPool: {get_param: CephStorageIPs}
173 NodeIndex: {get_param: NodeIndex}
176 type: OS::TripleO::CephStorage::Ports::ManagementPort
178 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
179 IPPool: {get_param: CephStorageIPs}
180 NodeIndex: {get_param: NodeIndex}
183 type: OS::TripleO::CephStorage::Net::SoftwareConfig
185 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
186 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
187 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
188 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
189 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
190 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
191 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
194 type: OS::TripleO::Network::Ports::NetIpMap
196 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
197 ExternalIp: {get_attr: [ExternalPort, ip_address]}
198 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
199 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
200 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
201 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
202 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
203 StorageIp: {get_attr: [StoragePort, ip_address]}
204 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
205 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
206 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
207 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
208 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
209 TenantIp: {get_attr: [TenantPort, ip_address]}
210 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
211 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
212 ManagementIp: {get_attr: [ManagementPort, ip_address]}
213 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
214 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
217 type: OS::TripleO::SoftwareDeployment
219 name: NetworkDeployment
220 config: {get_resource: NetworkConfig}
221 server: {get_resource: CephStorage}
222 actions: {get_param: NetworkDeploymentActions}
224 CephStorageDeployment:
225 type: OS::Heat::StructuredDeployment
226 depends_on: NetworkDeployment
228 name: CephStorageDeployment
229 config: {get_resource: CephStorageConfig}
230 server: {get_resource: CephStorage}
232 ntp_servers: {get_param: NtpServer}
233 timezone: {get_param: TimeZone}
234 enable_package_install: {get_param: EnablePackageInstall}
235 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
236 ceph_cluster_network: {get_attr: [NetIpMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
237 ceph_public_network: {get_attr: [NetIpMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
240 type: OS::Heat::StructuredConfig
242 group: os-apply-config
247 - heat_config_%{::deploy_config_name}
250 - ceph_cluster # provided by CephClusterConfig
255 merge_behavior: deeper
258 raw_data: {get_file: hieradata/common.yaml}
261 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
262 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
263 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
265 mapped_data: {get_param: CephStorageExtraConfig}
267 mapped_data: {get_param: ExtraConfig}
269 raw_data: {get_file: hieradata/ceph.yaml}
271 ntp::servers: {get_input: ntp_servers}
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}