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]
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.
84 CephStorageSchedulerHints:
86 description: Optional scheduler hints to pass to nova
91 ServiceConfigSettings:
95 type: comma_delimited_list
99 description: Command which will be run whenever configuration data changes
100 default: os-refresh-config --timeout 14400
104 type: OS::TripleO::Server
107 command: {get_param: ConfigCommand}
109 image: {get_param: CephStorageImage}
110 image_update_policy: {get_param: ImageUpdatePolicy}
111 flavor: {get_param: OvercloudCephStorageFlavor}
112 key_name: {get_param: KeyName}
115 user_data_format: SOFTWARE_CONFIG
116 user_data: {get_resource: UserData}
119 template: {get_param: Hostname}
120 params: {get_param: HostnameMap}
121 software_config_transport: {get_param: SoftwareConfigTransport}
122 metadata: {get_param: ServerMetadata}
123 scheduler_hints: {get_param: CephStorageSchedulerHints}
125 # Combine the NodeAdminUserData and NodeUserData mime archives
127 type: OS::Heat::MultipartMime
130 - config: {get_resource: NodeAdminUserData}
132 - config: {get_resource: NodeUserData}
135 # Creates the "heat-admin" user if configured via the environment
136 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
138 type: OS::TripleO::NodeAdminUserData
140 # For optional operator additional userdata
141 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
143 type: OS::TripleO::NodeUserData
146 type: OS::TripleO::CephStorage::Ports::ExternalPort
148 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
149 IPPool: {get_param: CephStorageIPs}
150 NodeIndex: {get_param: NodeIndex}
153 type: OS::TripleO::CephStorage::Ports::InternalApiPort
155 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
156 IPPool: {get_param: CephStorageIPs}
157 NodeIndex: {get_param: NodeIndex}
160 type: OS::TripleO::CephStorage::Ports::StoragePort
162 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
163 IPPool: {get_param: CephStorageIPs}
164 NodeIndex: {get_param: NodeIndex}
167 type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
169 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
170 IPPool: {get_param: CephStorageIPs}
171 NodeIndex: {get_param: NodeIndex}
174 type: OS::TripleO::CephStorage::Ports::TenantPort
176 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
177 IPPool: {get_param: CephStorageIPs}
178 NodeIndex: {get_param: NodeIndex}
181 type: OS::TripleO::CephStorage::Ports::ManagementPort
183 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
184 IPPool: {get_param: CephStorageIPs}
185 NodeIndex: {get_param: NodeIndex}
188 type: OS::TripleO::CephStorage::Net::SoftwareConfig
190 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
191 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
192 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
193 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
194 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
195 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
196 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
199 type: OS::TripleO::Network::Ports::NetIpMap
201 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
202 ExternalIp: {get_attr: [ExternalPort, ip_address]}
203 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
204 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
205 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
206 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
207 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
208 StorageIp: {get_attr: [StoragePort, ip_address]}
209 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
210 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
211 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
212 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
213 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
214 TenantIp: {get_attr: [TenantPort, ip_address]}
215 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
216 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
217 ManagementIp: {get_attr: [ManagementPort, ip_address]}
218 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
219 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
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 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}
255 - ceph_cluster # provided by CephClusterConfig
257 - all_nodes # provided by allNodesConfig
260 merge_behavior: deeper
264 service_names: {get_param: ServiceNames}
268 - {get_param: ServiceConfigSettings}
269 - values: {get_attr: [NetIpMap, net_ip_map]}
272 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
273 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
274 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
276 mapped_data: {get_param: CephStorageExtraConfig}
278 mapped_data: {get_param: ExtraConfig}
281 tripleo::packages::enable_install: {get_input: enable_package_install}
282 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
283 ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
284 ceph::profile::params::public_network: {get_input: ceph_public_network}
286 # Resource for site-specific injection of root certificate
288 depends_on: CephStorageDeployment
289 type: OS::TripleO::NodeTLSCAData
291 server: {get_resource: CephStorage}
293 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
294 CephStorageExtraConfigPre:
295 depends_on: CephStorageDeployment
296 type: OS::TripleO::CephStorageExtraConfigPre
298 server: {get_resource: CephStorage}
300 # Hook for site-specific additional pre-deployment config,
301 # applying to all nodes, e.g node registration/unregistration
303 depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
304 type: OS::TripleO::NodeExtraConfig
306 server: {get_resource: CephStorage}
309 type: OS::TripleO::Tasks::PackageUpdate
312 type: OS::Heat::SoftwareDeployment
314 config: {get_resource: UpdateConfig}
315 server: {get_resource: CephStorage}
318 get_param: UpdateIdentifier
322 description: IP address of the server in the ctlplane network
323 value: {get_attr: [CephStorage, networks, ctlplane, 0]}
325 description: Hostname of the server
326 value: {get_attr: [CephStorage, name]}
331 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
332 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
333 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
334 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
335 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
336 TENANTIP TENANTHOST.DOMAIN TENANTHOST
337 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
339 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
340 DOMAIN: {get_param: CloudDomain}
341 PRIMARYHOST: {get_attr: [CephStorage, name]}
342 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
346 - - {get_attr: [CephStorage, name]}
348 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
352 - - {get_attr: [CephStorage, name]}
354 STORAGEIP: {get_attr: [StoragePort, ip_address]}
358 - - {get_attr: [CephStorage, name]}
360 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
364 - - {get_attr: [CephStorage, name]}
366 TENANTIP: {get_attr: [TenantPort, ip_address]}
370 - - {get_attr: [CephStorage, name]}
372 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
376 - - {get_attr: [CephStorage, name]}
378 nova_server_resource:
379 description: Heat resource handle for the ceph storage server
381 {get_resource: CephStorage}
383 description: IP address of the server in the external network
384 value: {get_attr: [ExternalPort, ip_address]}
385 internal_api_ip_address:
386 description: IP address of the server in the internal_api network
387 value: {get_attr: [InternalApiPort, ip_address]}
389 description: IP address of the server in the storage network
390 value: {get_attr: [StoragePort, ip_address]}
391 storage_mgmt_ip_address:
392 description: IP address of the server in the storage_mgmt network
393 value: {get_attr: [StorageMgmtPort, ip_address]}
395 description: IP address of the server in the tenant network
396 value: {get_attr: [TenantPort, ip_address]}
397 management_ip_address:
398 description: IP address of the server in the management network
399 value: {get_attr: [ManagementPort, ip_address]}