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 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
199 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
200 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
201 StorageIp: {get_attr: [StoragePort, ip_address]}
202 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
203 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
204 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
205 TenantIp: {get_attr: [TenantPort, ip_address]}
206 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
207 ManagementIp: {get_attr: [ManagementPort, ip_address]}
208 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
211 type: OS::TripleO::Network::Ports::NetIpSubnetMap
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::SoftwareDeployment
224 name: NetworkDeployment
225 config: {get_resource: NetworkConfig}
226 server: {get_resource: CephStorage}
227 actions: {get_param: NetworkDeploymentActions}
229 CephStorageDeployment:
230 type: OS::Heat::StructuredDeployment
231 depends_on: NetworkDeployment
233 name: CephStorageDeployment
234 config: {get_resource: CephStorageConfig}
235 server: {get_resource: CephStorage}
237 ntp_servers: {get_param: NtpServer}
238 timezone: {get_param: TimeZone}
239 enable_package_install: {get_param: EnablePackageInstall}
240 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
241 ceph_cluster_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
242 ceph_public_network: {get_attr: [NetIpSubnetMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
245 type: OS::Heat::StructuredConfig
247 group: os-apply-config
252 - heat_config_%{::deploy_config_name}
255 - ceph_cluster # provided by CephClusterConfig
261 raw_data: {get_file: hieradata/common.yaml}
263 mapped_data: {get_param: CephStorageExtraConfig}
265 mapped_data: {get_param: ExtraConfig}
267 raw_data: {get_file: hieradata/ceph.yaml}
269 ntp::servers: {get_input: ntp_servers}
270 timezone::timezone: {get_input: timezone}
271 tripleo::packages::enable_install: {get_input: enable_package_install}
272 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
273 ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
274 ceph::profile::params::public_network: {get_input: ceph_public_network}
276 # Resource for site-specific injection of root certificate
278 depends_on: CephStorageDeployment
279 type: OS::TripleO::NodeTLSCAData
281 server: {get_resource: CephStorage}
283 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
284 CephStorageExtraConfigPre:
285 depends_on: CephStorageDeployment
286 type: OS::TripleO::CephStorageExtraConfigPre
288 server: {get_resource: CephStorage}
290 # Hook for site-specific additional pre-deployment config,
291 # applying to all nodes, e.g node registration/unregistration
293 depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
294 type: OS::TripleO::NodeExtraConfig
296 server: {get_resource: CephStorage}
299 type: OS::TripleO::Tasks::PackageUpdate
302 type: OS::Heat::SoftwareDeployment
304 config: {get_resource: UpdateConfig}
305 server: {get_resource: CephStorage}
308 get_param: UpdateIdentifier
315 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
316 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
317 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
318 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
319 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
320 TENANTIP TENANTHOST.DOMAIN TENANTHOST
321 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
323 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
324 DOMAIN: {get_param: CloudDomain}
325 PRIMARYHOST: {get_attr: [CephStorage, name]}
326 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
330 - - {get_attr: [CephStorage, name]}
332 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
336 - - {get_attr: [CephStorage, name]}
338 STORAGEIP: {get_attr: [StoragePort, ip_address]}
342 - - {get_attr: [CephStorage, name]}
344 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
348 - - {get_attr: [CephStorage, name]}
350 TENANTIP: {get_attr: [TenantPort, ip_address]}
354 - - {get_attr: [CephStorage, name]}
356 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
360 - - {get_attr: [CephStorage, name]}
362 nova_server_resource:
363 description: Heat resource handle for the ceph storage server
365 {get_resource: CephStorage}
367 description: IP address of the server in the external network
368 value: {get_attr: [ExternalPort, ip_address]}
369 internal_api_ip_address:
370 description: IP address of the server in the internal_api network
371 value: {get_attr: [InternalApiPort, ip_address]}
373 description: IP address of the server in the storage network
374 value: {get_attr: [StoragePort, ip_address]}
375 storage_mgmt_ip_address:
376 description: IP address of the server in the storage_mgmt network
377 value: {get_attr: [StorageMgmtPort, ip_address]}
379 description: IP address of the server in the tenant network
380 value: {get_attr: [TenantPort, ip_address]}
381 management_ip_address:
382 description: IP address of the server in the management network
383 value: {get_attr: [ManagementPort, ip_address]}
385 description: identifier which changes if the node configuration may need re-applying
389 - - {get_attr: [CephStorageDeployment, deploy_stdout]}
390 - {get_attr: [NodeTLSCAData, deploy_stdout]}
391 - {get_attr: [CephStorageExtraConfigPre, deploy_stdout]}
392 - {get_param: UpdateIdentifier}