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
259 merge_behavior: deeper
262 raw_data: {get_file: hieradata/common.yaml}
264 mapped_data: {get_param: CephStorageExtraConfig}
266 mapped_data: {get_param: ExtraConfig}
268 raw_data: {get_file: hieradata/ceph.yaml}
270 ntp::servers: {get_input: ntp_servers}
271 timezone::timezone: {get_input: timezone}
272 tripleo::packages::enable_install: {get_input: enable_package_install}
273 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
274 ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
275 ceph::profile::params::public_network: {get_input: ceph_public_network}
277 # Resource for site-specific injection of root certificate
279 depends_on: CephStorageDeployment
280 type: OS::TripleO::NodeTLSCAData
282 server: {get_resource: CephStorage}
284 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
285 CephStorageExtraConfigPre:
286 depends_on: CephStorageDeployment
287 type: OS::TripleO::CephStorageExtraConfigPre
289 server: {get_resource: CephStorage}
291 # Hook for site-specific additional pre-deployment config,
292 # applying to all nodes, e.g node registration/unregistration
294 depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
295 type: OS::TripleO::NodeExtraConfig
297 server: {get_resource: CephStorage}
300 type: OS::TripleO::Tasks::PackageUpdate
303 type: OS::Heat::SoftwareDeployment
305 config: {get_resource: UpdateConfig}
306 server: {get_resource: CephStorage}
309 get_param: UpdateIdentifier
316 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
317 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
318 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
319 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
320 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
321 TENANTIP TENANTHOST.DOMAIN TENANTHOST
322 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
324 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
325 DOMAIN: {get_param: CloudDomain}
326 PRIMARYHOST: {get_attr: [CephStorage, name]}
327 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
331 - - {get_attr: [CephStorage, name]}
333 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
337 - - {get_attr: [CephStorage, name]}
339 STORAGEIP: {get_attr: [StoragePort, ip_address]}
343 - - {get_attr: [CephStorage, name]}
345 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
349 - - {get_attr: [CephStorage, name]}
351 TENANTIP: {get_attr: [TenantPort, ip_address]}
355 - - {get_attr: [CephStorage, name]}
357 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
361 - - {get_attr: [CephStorage, name]}
363 nova_server_resource:
364 description: Heat resource handle for the ceph storage server
366 {get_resource: CephStorage}
368 description: IP address of the server in the external network
369 value: {get_attr: [ExternalPort, ip_address]}
370 internal_api_ip_address:
371 description: IP address of the server in the internal_api network
372 value: {get_attr: [InternalApiPort, ip_address]}
374 description: IP address of the server in the storage network
375 value: {get_attr: [StoragePort, ip_address]}
376 storage_mgmt_ip_address:
377 description: IP address of the server in the storage_mgmt network
378 value: {get_attr: [StorageMgmtPort, ip_address]}
380 description: IP address of the server in the tenant network
381 value: {get_attr: [TenantPort, ip_address]}
382 management_ip_address:
383 description: IP address of the server in the management network
384 value: {get_attr: [ManagementPort, ip_address]}
386 description: identifier which changes if the node configuration may need re-applying
390 - - {get_attr: [CephStorageDeployment, deploy_stdout]}
391 - {get_attr: [NodeTLSCAData, deploy_stdout]}
392 - {get_attr: [CephStorageExtraConfigPre, deploy_stdout]}
393 - {get_param: UpdateIdentifier}