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.
37 Setting to a previously unused value during stack-update will trigger
38 package update on all nodes
41 default: '' # Defaults to Heat created hostname
45 description: Optional mapping to override hostnames
49 Additional hiera configuration to inject into the cluster. Note
50 that CephStorageExtraConfig takes precedence over ExtraConfig.
52 CephStorageExtraConfig:
55 Role specific additional hiera configuration to inject into the cluster.
60 NetworkDeploymentActions:
61 type: comma_delimited_list
63 Heat action when to apply network configuration changes
65 SoftwareConfigTransport:
66 default: POLL_SERVER_CFN
68 How the server should receive the metadata required for software configuration.
71 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
76 The DNS domain used for the hosts. This should match the dhcp_domain
77 configured in the Undercloud neutron. Defaults to localdomain.
81 Extra properties or metadata passed to Nova for the created nodes in
82 the overcloud. It's accessible via the Nova metadata API.
86 description: Optional scheduler hints to pass to nova
91 ServiceConfigSettings:
97 type: OS::Nova::Server
99 image: {get_param: Image}
100 image_update_policy: {get_param: ImageUpdatePolicy}
101 flavor: {get_param: Flavor}
102 key_name: {get_param: KeyName}
105 user_data_format: SOFTWARE_CONFIG
106 user_data: {get_resource: UserData}
109 template: {get_param: Hostname}
110 params: {get_param: HostnameMap}
111 software_config_transport: {get_param: SoftwareConfigTransport}
112 metadata: {get_param: ServerMetadata}
113 scheduler_hints: {get_param: SchedulerHints}
115 # Combine the NodeAdminUserData and NodeUserData mime archives
117 type: OS::Heat::MultipartMime
120 - config: {get_resource: NodeAdminUserData}
122 - config: {get_resource: NodeUserData}
125 # Creates the "heat-admin" user if configured via the environment
126 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
128 type: OS::TripleO::NodeAdminUserData
130 # For optional operator additional userdata
131 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
133 type: OS::TripleO::NodeUserData
136 type: OS::TripleO::CephStorage::Ports::ExternalPort
138 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
139 IPPool: {get_param: CephStorageIPs}
140 NodeIndex: {get_param: NodeIndex}
143 type: OS::TripleO::CephStorage::Ports::InternalApiPort
145 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
146 IPPool: {get_param: CephStorageIPs}
147 NodeIndex: {get_param: NodeIndex}
150 type: OS::TripleO::CephStorage::Ports::StoragePort
152 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
153 IPPool: {get_param: CephStorageIPs}
154 NodeIndex: {get_param: NodeIndex}
157 type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
159 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
160 IPPool: {get_param: CephStorageIPs}
161 NodeIndex: {get_param: NodeIndex}
164 type: OS::TripleO::CephStorage::Ports::TenantPort
166 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
167 IPPool: {get_param: CephStorageIPs}
168 NodeIndex: {get_param: NodeIndex}
171 type: OS::TripleO::CephStorage::Ports::ManagementPort
173 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
174 IPPool: {get_param: CephStorageIPs}
175 NodeIndex: {get_param: NodeIndex}
178 type: OS::TripleO::CephStorage::Net::SoftwareConfig
180 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
181 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
182 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
183 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
184 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
185 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
186 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
189 type: OS::TripleO::Network::Ports::NetIpMap
191 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
192 ExternalIp: {get_attr: [ExternalPort, ip_address]}
193 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
194 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
195 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
196 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
197 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
198 StorageIp: {get_attr: [StoragePort, ip_address]}
199 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
200 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
201 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
202 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
203 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
204 TenantIp: {get_attr: [TenantPort, ip_address]}
205 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
206 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
207 ManagementIp: {get_attr: [ManagementPort, ip_address]}
208 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
209 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
212 type: OS::TripleO::SoftwareDeployment
214 name: NetworkDeployment
215 config: {get_resource: NetworkConfig}
216 server: {get_resource: CephStorage}
217 actions: {get_param: NetworkDeploymentActions}
219 CephStorageDeployment:
220 type: OS::Heat::StructuredDeployment
221 depends_on: NetworkDeployment
223 name: CephStorageDeployment
224 config: {get_resource: CephStorageConfig}
225 server: {get_resource: CephStorage}
227 enable_package_install: {get_param: EnablePackageInstall}
228 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
229 ceph_cluster_network: {get_attr: [NetIpMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
230 ceph_public_network: {get_attr: [NetIpMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
233 type: OS::Heat::StructuredConfig
235 group: os-apply-config
240 - heat_config_%{::deploy_config_name}
244 - ceph_cluster # provided by CephClusterConfig
249 merge_behavior: deeper
252 mapped_data: {get_param: ServiceConfigSettings}
254 raw_data: {get_file: hieradata/common.yaml}
257 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
258 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
259 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
261 mapped_data: {get_param: CephStorageExtraConfig}
263 mapped_data: {get_param: ExtraConfig}
265 raw_data: {get_file: hieradata/ceph.yaml}
267 tripleo::packages::enable_install: {get_input: enable_package_install}
268 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
269 ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
270 ceph::profile::params::public_network: {get_input: ceph_public_network}
272 # Resource for site-specific injection of root certificate
274 depends_on: CephStorageDeployment
275 type: OS::TripleO::NodeTLSCAData
277 server: {get_resource: CephStorage}
279 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
280 CephStorageExtraConfigPre:
281 depends_on: CephStorageDeployment
282 type: OS::TripleO::CephStorageExtraConfigPre
284 server: {get_resource: CephStorage}
286 # Hook for site-specific additional pre-deployment config,
287 # applying to all nodes, e.g node registration/unregistration
289 depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
290 type: OS::TripleO::NodeExtraConfig
292 server: {get_resource: CephStorage}
295 type: OS::TripleO::Tasks::PackageUpdate
298 type: OS::Heat::SoftwareDeployment
300 config: {get_resource: UpdateConfig}
301 server: {get_resource: CephStorage}
304 get_param: UpdateIdentifier
311 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
312 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
313 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
314 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
315 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
316 TENANTIP TENANTHOST.DOMAIN TENANTHOST
317 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
319 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
320 DOMAIN: {get_param: CloudDomain}
321 PRIMARYHOST: {get_attr: [CephStorage, name]}
322 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
326 - - {get_attr: [CephStorage, name]}
328 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
332 - - {get_attr: [CephStorage, name]}
334 STORAGEIP: {get_attr: [StoragePort, ip_address]}
338 - - {get_attr: [CephStorage, name]}
340 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
344 - - {get_attr: [CephStorage, name]}
346 TENANTIP: {get_attr: [TenantPort, ip_address]}
350 - - {get_attr: [CephStorage, name]}
352 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
356 - - {get_attr: [CephStorage, name]}
358 nova_server_resource:
359 description: Heat resource handle for the ceph storage server
361 {get_resource: CephStorage}
363 description: IP address of the server in the external network
364 value: {get_attr: [ExternalPort, ip_address]}
365 internal_api_ip_address:
366 description: IP address of the server in the internal_api network
367 value: {get_attr: [InternalApiPort, ip_address]}
369 description: IP address of the server in the storage network
370 value: {get_attr: [StoragePort, ip_address]}
371 storage_mgmt_ip_address:
372 description: IP address of the server in the storage_mgmt network
373 value: {get_attr: [StorageMgmtPort, ip_address]}
375 description: IP address of the server in the tenant network
376 value: {get_attr: [TenantPort, ip_address]}
377 management_ip_address:
378 description: IP address of the server in the management network
379 value: {get_attr: [ManagementPort, ip_address]}
381 description: identifier which changes if the node configuration may need re-applying
385 - - {get_attr: [CephStorageDeployment, deploy_stdout]}
386 - {get_attr: [NodeTLSCAData, deploy_stdout]}
387 - {get_attr: [CephStorageExtraConfigPre, deploy_stdout]}
388 - {get_param: UpdateIdentifier}