1 heat_template_version: 2016-10-14
2 description: 'OpenStack ceph storage node configured by Puppet'
4 OvercloudCephStorageFlavor:
5 description: Flavor for the Ceph Storage node.
9 - custom_constraint: nova.flavor
12 default: overcloud-full
14 - custom_constraint: glance.image
16 default: 'REBUILD_PRESERVE_EPHEMERAL'
17 description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
20 description: Name of an existing Nova key pair to enable SSH access to the instances
24 - custom_constraint: nova.keypair
27 description: Set to true to enable package installation via Puppet
31 description: Mapping of service_name -> network name. Typically set
32 via parameter_defaults in the resource registry.
38 Setting to a previously unused value during stack-update will trigger
39 package update on all nodes
42 default: '' # Defaults to Heat created hostname
46 description: Optional mapping to override hostnames
50 Additional hiera configuration to inject into the cluster. Note
51 that CephStorageExtraConfig takes precedence over ExtraConfig.
53 CephStorageExtraConfig:
56 Role specific additional hiera configuration to inject into the cluster.
61 NetworkDeploymentActions:
62 type: comma_delimited_list
64 Heat action when to apply network configuration changes
66 SoftwareConfigTransport:
67 default: POLL_SERVER_CFN
69 How the server should receive the metadata required for software configuration.
72 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
77 The DNS domain used for the hosts. This should match the dhcp_domain
78 configured in the Undercloud neutron. Defaults to localdomain.
82 Extra properties or metadata passed to Nova for the created nodes in
83 the overcloud. It's accessible via the Nova metadata API.
85 CephStorageSchedulerHints:
87 description: Optional scheduler hints to pass to nova
92 ServiceConfigSettings:
96 type: comma_delimited_list
100 description: Command which will be run whenever configuration data changes
101 default: os-refresh-config --timeout 14400
105 type: OS::TripleO::Server
108 command: {get_param: ConfigCommand}
110 image: {get_param: CephStorageImage}
111 image_update_policy: {get_param: ImageUpdatePolicy}
112 flavor: {get_param: OvercloudCephStorageFlavor}
113 key_name: {get_param: KeyName}
116 user_data_format: SOFTWARE_CONFIG
117 user_data: {get_resource: UserData}
120 template: {get_param: Hostname}
121 params: {get_param: HostnameMap}
122 software_config_transport: {get_param: SoftwareConfigTransport}
123 metadata: {get_param: ServerMetadata}
124 scheduler_hints: {get_param: CephStorageSchedulerHints}
126 # Combine the NodeAdminUserData and NodeUserData mime archives
128 type: OS::Heat::MultipartMime
131 - config: {get_resource: NodeAdminUserData}
133 - config: {get_resource: NodeUserData}
136 # Creates the "heat-admin" user if configured via the environment
137 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
139 type: OS::TripleO::NodeAdminUserData
141 # For optional operator additional userdata
142 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
144 type: OS::TripleO::NodeUserData
147 type: OS::TripleO::CephStorage::Ports::ExternalPort
149 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
150 IPPool: {get_param: CephStorageIPs}
151 NodeIndex: {get_param: NodeIndex}
154 type: OS::TripleO::CephStorage::Ports::InternalApiPort
156 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
157 IPPool: {get_param: CephStorageIPs}
158 NodeIndex: {get_param: NodeIndex}
161 type: OS::TripleO::CephStorage::Ports::StoragePort
163 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
164 IPPool: {get_param: CephStorageIPs}
165 NodeIndex: {get_param: NodeIndex}
168 type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
170 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
171 IPPool: {get_param: CephStorageIPs}
172 NodeIndex: {get_param: NodeIndex}
175 type: OS::TripleO::CephStorage::Ports::TenantPort
177 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
178 IPPool: {get_param: CephStorageIPs}
179 NodeIndex: {get_param: NodeIndex}
182 type: OS::TripleO::CephStorage::Ports::ManagementPort
184 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
185 IPPool: {get_param: CephStorageIPs}
186 NodeIndex: {get_param: NodeIndex}
189 type: OS::TripleO::CephStorage::Net::SoftwareConfig
191 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
192 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
193 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
194 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
195 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
196 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
197 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
200 type: OS::TripleO::Network::Ports::NetIpMap
202 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
203 ExternalIp: {get_attr: [ExternalPort, ip_address]}
204 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
205 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
206 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
207 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
208 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
209 StorageIp: {get_attr: [StoragePort, ip_address]}
210 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
211 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
212 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
213 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
214 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
215 TenantIp: {get_attr: [TenantPort, ip_address]}
216 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
217 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
218 ManagementIp: {get_attr: [ManagementPort, ip_address]}
219 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
220 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
223 type: OS::TripleO::SoftwareDeployment
225 name: NetworkDeployment
226 config: {get_resource: NetworkConfig}
227 server: {get_resource: CephStorage}
228 actions: {get_param: NetworkDeploymentActions}
230 CephStorageDeployment:
231 type: OS::Heat::StructuredDeployment
232 depends_on: NetworkDeployment
234 name: CephStorageDeployment
235 config: {get_resource: CephStorageConfig}
236 server: {get_resource: CephStorage}
238 enable_package_install: {get_param: EnablePackageInstall}
239 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
240 ceph_cluster_network: {get_attr: [NetIpMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
241 ceph_public_network: {get_attr: [NetIpMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
244 type: OS::Heat::StructuredConfig
246 group: os-apply-config
251 - heat_config_%{::deploy_config_name}
256 - ceph_cluster # provided by CephClusterConfig
258 - all_nodes # provided by allNodesConfig
261 merge_behavior: deeper
265 service_names: {get_param: ServiceNames}
269 - {get_param: ServiceConfigSettings}
270 - values: {get_attr: [NetIpMap, net_ip_map]}
273 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
274 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
275 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
277 mapped_data: {get_param: CephStorageExtraConfig}
279 mapped_data: {get_param: ExtraConfig}
282 tripleo::packages::enable_install: {get_input: enable_package_install}
283 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
284 ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
285 ceph::profile::params::public_network: {get_input: ceph_public_network}
287 # Resource for site-specific injection of root certificate
289 depends_on: CephStorageDeployment
290 type: OS::TripleO::NodeTLSCAData
292 server: {get_resource: CephStorage}
294 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
295 CephStorageExtraConfigPre:
296 depends_on: CephStorageDeployment
297 type: OS::TripleO::CephStorageExtraConfigPre
299 server: {get_resource: CephStorage}
301 # Hook for site-specific additional pre-deployment config,
302 # applying to all nodes, e.g node registration/unregistration
304 depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
305 type: OS::TripleO::NodeExtraConfig
307 server: {get_resource: CephStorage}
310 type: OS::TripleO::Tasks::PackageUpdate
313 type: OS::Heat::SoftwareDeployment
315 config: {get_resource: UpdateConfig}
316 server: {get_resource: CephStorage}
319 get_param: UpdateIdentifier
323 description: IP address of the server in the ctlplane network
324 value: {get_attr: [CephStorage, networks, ctlplane, 0]}
326 description: Hostname of the server
327 value: {get_attr: [CephStorage, name]}
332 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
333 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
334 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
335 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
336 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
337 TENANTIP TENANTHOST.DOMAIN TENANTHOST
338 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
340 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
341 DOMAIN: {get_param: CloudDomain}
342 PRIMARYHOST: {get_attr: [CephStorage, name]}
343 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
347 - - {get_attr: [CephStorage, name]}
349 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
353 - - {get_attr: [CephStorage, name]}
355 STORAGEIP: {get_attr: [StoragePort, ip_address]}
359 - - {get_attr: [CephStorage, name]}
361 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
365 - - {get_attr: [CephStorage, name]}
367 TENANTIP: {get_attr: [TenantPort, ip_address]}
371 - - {get_attr: [CephStorage, name]}
373 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
377 - - {get_attr: [CephStorage, name]}
379 nova_server_resource:
380 description: Heat resource handle for the ceph storage server
382 {get_resource: CephStorage}
384 description: IP address of the server in the external network
385 value: {get_attr: [ExternalPort, ip_address]}
386 internal_api_ip_address:
387 description: IP address of the server in the internal_api network
388 value: {get_attr: [InternalApiPort, ip_address]}
390 description: IP address of the server in the storage network
391 value: {get_attr: [StoragePort, ip_address]}
392 storage_mgmt_ip_address:
393 description: IP address of the server in the storage_mgmt network
394 value: {get_attr: [StorageMgmtPort, ip_address]}
396 description: IP address of the server in the tenant network
397 value: {get_attr: [TenantPort, ip_address]}
398 management_ip_address:
399 description: IP address of the server in the management network
400 value: {get_attr: [ManagementPort, ip_address]}