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
99 ServiceConfigSettings:
105 type: OS::Nova::Server
107 image: {get_param: Image}
108 image_update_policy: {get_param: ImageUpdatePolicy}
109 flavor: {get_param: Flavor}
110 key_name: {get_param: KeyName}
113 user_data_format: SOFTWARE_CONFIG
114 user_data: {get_resource: UserData}
117 template: {get_param: Hostname}
118 params: {get_param: HostnameMap}
119 software_config_transport: {get_param: SoftwareConfigTransport}
120 metadata: {get_param: ServerMetadata}
121 scheduler_hints: {get_param: SchedulerHints}
123 # Combine the NodeAdminUserData and NodeUserData mime archives
125 type: OS::Heat::MultipartMime
128 - config: {get_resource: NodeAdminUserData}
130 - config: {get_resource: NodeUserData}
133 # Creates the "heat-admin" user if configured via the environment
134 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
136 type: OS::TripleO::NodeAdminUserData
138 # For optional operator additional userdata
139 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
141 type: OS::TripleO::NodeUserData
144 type: OS::TripleO::CephStorage::Ports::ExternalPort
146 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
147 IPPool: {get_param: CephStorageIPs}
148 NodeIndex: {get_param: NodeIndex}
151 type: OS::TripleO::CephStorage::Ports::InternalApiPort
153 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
154 IPPool: {get_param: CephStorageIPs}
155 NodeIndex: {get_param: NodeIndex}
158 type: OS::TripleO::CephStorage::Ports::StoragePort
160 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
161 IPPool: {get_param: CephStorageIPs}
162 NodeIndex: {get_param: NodeIndex}
165 type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
167 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
168 IPPool: {get_param: CephStorageIPs}
169 NodeIndex: {get_param: NodeIndex}
172 type: OS::TripleO::CephStorage::Ports::TenantPort
174 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
175 IPPool: {get_param: CephStorageIPs}
176 NodeIndex: {get_param: NodeIndex}
179 type: OS::TripleO::CephStorage::Ports::ManagementPort
181 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
182 IPPool: {get_param: CephStorageIPs}
183 NodeIndex: {get_param: NodeIndex}
186 type: OS::TripleO::CephStorage::Net::SoftwareConfig
188 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
189 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
190 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
191 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
192 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
193 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
194 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
197 type: OS::TripleO::Network::Ports::NetIpMap
199 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
200 ExternalIp: {get_attr: [ExternalPort, ip_address]}
201 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
202 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
203 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
204 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
205 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
206 StorageIp: {get_attr: [StoragePort, ip_address]}
207 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
208 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
209 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
210 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
211 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
212 TenantIp: {get_attr: [TenantPort, ip_address]}
213 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
214 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
215 ManagementIp: {get_attr: [ManagementPort, ip_address]}
216 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
217 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
220 type: OS::TripleO::SoftwareDeployment
222 name: NetworkDeployment
223 config: {get_resource: NetworkConfig}
224 server: {get_resource: CephStorage}
225 actions: {get_param: NetworkDeploymentActions}
227 CephStorageDeployment:
228 type: OS::Heat::StructuredDeployment
229 depends_on: NetworkDeployment
231 name: CephStorageDeployment
232 config: {get_resource: CephStorageConfig}
233 server: {get_resource: CephStorage}
235 ntp_servers: {get_param: NtpServer}
236 timezone: {get_param: TimeZone}
237 enable_package_install: {get_param: EnablePackageInstall}
238 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
239 ceph_cluster_network: {get_attr: [NetIpMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
240 ceph_public_network: {get_attr: [NetIpMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
243 type: OS::Heat::StructuredConfig
245 group: os-apply-config
250 - heat_config_%{::deploy_config_name}
254 - ceph_cluster # provided by CephClusterConfig
259 merge_behavior: deeper
262 mapped_data: {get_param: ServiceConfigSettings}
264 raw_data: {get_file: hieradata/common.yaml}
267 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
268 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
269 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
271 mapped_data: {get_param: CephStorageExtraConfig}
273 mapped_data: {get_param: ExtraConfig}
275 raw_data: {get_file: hieradata/ceph.yaml}
277 ntp::servers: {get_input: ntp_servers}
278 timezone::timezone: {get_input: timezone}
279 tripleo::packages::enable_install: {get_input: enable_package_install}
280 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
281 ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
282 ceph::profile::params::public_network: {get_input: ceph_public_network}
284 # Resource for site-specific injection of root certificate
286 depends_on: CephStorageDeployment
287 type: OS::TripleO::NodeTLSCAData
289 server: {get_resource: CephStorage}
291 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
292 CephStorageExtraConfigPre:
293 depends_on: CephStorageDeployment
294 type: OS::TripleO::CephStorageExtraConfigPre
296 server: {get_resource: CephStorage}
298 # Hook for site-specific additional pre-deployment config,
299 # applying to all nodes, e.g node registration/unregistration
301 depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
302 type: OS::TripleO::NodeExtraConfig
304 server: {get_resource: CephStorage}
307 type: OS::TripleO::Tasks::PackageUpdate
310 type: OS::Heat::SoftwareDeployment
312 config: {get_resource: UpdateConfig}
313 server: {get_resource: CephStorage}
316 get_param: UpdateIdentifier
323 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
324 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
325 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
326 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
327 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
328 TENANTIP TENANTHOST.DOMAIN TENANTHOST
329 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
331 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
332 DOMAIN: {get_param: CloudDomain}
333 PRIMARYHOST: {get_attr: [CephStorage, name]}
334 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
338 - - {get_attr: [CephStorage, name]}
340 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
344 - - {get_attr: [CephStorage, name]}
346 STORAGEIP: {get_attr: [StoragePort, ip_address]}
350 - - {get_attr: [CephStorage, name]}
352 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
356 - - {get_attr: [CephStorage, name]}
358 TENANTIP: {get_attr: [TenantPort, ip_address]}
362 - - {get_attr: [CephStorage, name]}
364 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
368 - - {get_attr: [CephStorage, name]}
370 nova_server_resource:
371 description: Heat resource handle for the ceph storage server
373 {get_resource: CephStorage}
375 description: IP address of the server in the external network
376 value: {get_attr: [ExternalPort, ip_address]}
377 internal_api_ip_address:
378 description: IP address of the server in the internal_api network
379 value: {get_attr: [InternalApiPort, ip_address]}
381 description: IP address of the server in the storage network
382 value: {get_attr: [StoragePort, ip_address]}
383 storage_mgmt_ip_address:
384 description: IP address of the server in the storage_mgmt network
385 value: {get_attr: [StorageMgmtPort, ip_address]}
387 description: IP address of the server in the tenant network
388 value: {get_attr: [TenantPort, ip_address]}
389 management_ip_address:
390 description: IP address of the server in the management network
391 value: {get_attr: [ManagementPort, ip_address]}
393 description: identifier which changes if the node configuration may need re-applying
397 - - {get_attr: [CephStorageDeployment, deploy_stdout]}
398 - {get_attr: [NodeTLSCAData, deploy_stdout]}
399 - {get_attr: [CephStorageExtraConfigPre, deploy_stdout]}
400 - {get_param: UpdateIdentifier}