1 heat_template_version: 2015-04-30
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}
267 mapped_data: {get_param: ServiceConfigSettings}
270 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
271 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
272 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
274 mapped_data: {get_param: CephStorageExtraConfig}
276 mapped_data: {get_param: ExtraConfig}
278 raw_data: {get_file: hieradata/ceph.yaml}
280 tripleo::packages::enable_install: {get_input: enable_package_install}
281 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
282 ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
283 ceph::profile::params::public_network: {get_input: ceph_public_network}
285 # Resource for site-specific injection of root certificate
287 depends_on: CephStorageDeployment
288 type: OS::TripleO::NodeTLSCAData
290 server: {get_resource: CephStorage}
292 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
293 CephStorageExtraConfigPre:
294 depends_on: CephStorageDeployment
295 type: OS::TripleO::CephStorageExtraConfigPre
297 server: {get_resource: CephStorage}
299 # Hook for site-specific additional pre-deployment config,
300 # applying to all nodes, e.g node registration/unregistration
302 depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
303 type: OS::TripleO::NodeExtraConfig
305 server: {get_resource: CephStorage}
308 type: OS::TripleO::Tasks::PackageUpdate
311 type: OS::Heat::SoftwareDeployment
313 config: {get_resource: UpdateConfig}
314 server: {get_resource: CephStorage}
317 get_param: UpdateIdentifier
321 description: IP address of the server in the ctlplane network
322 value: {get_attr: [CephStorage, networks, ctlplane, 0]}
324 description: Hostname of the server
325 value: {get_attr: [CephStorage, name]}
330 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
331 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
332 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
333 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
334 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
335 TENANTIP TENANTHOST.DOMAIN TENANTHOST
336 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
338 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
339 DOMAIN: {get_param: CloudDomain}
340 PRIMARYHOST: {get_attr: [CephStorage, name]}
341 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
345 - - {get_attr: [CephStorage, name]}
347 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
351 - - {get_attr: [CephStorage, name]}
353 STORAGEIP: {get_attr: [StoragePort, ip_address]}
357 - - {get_attr: [CephStorage, name]}
359 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
363 - - {get_attr: [CephStorage, name]}
365 TENANTIP: {get_attr: [TenantPort, ip_address]}
369 - - {get_attr: [CephStorage, name]}
371 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
375 - - {get_attr: [CephStorage, name]}
377 nova_server_resource:
378 description: Heat resource handle for the ceph storage server
380 {get_resource: CephStorage}
382 description: IP address of the server in the external network
383 value: {get_attr: [ExternalPort, ip_address]}
384 internal_api_ip_address:
385 description: IP address of the server in the internal_api network
386 value: {get_attr: [InternalApiPort, ip_address]}
388 description: IP address of the server in the storage network
389 value: {get_attr: [StoragePort, ip_address]}
390 storage_mgmt_ip_address:
391 description: IP address of the server in the storage_mgmt network
392 value: {get_attr: [StorageMgmtPort, ip_address]}
394 description: IP address of the server in the tenant network
395 value: {get_attr: [TenantPort, ip_address]}
396 management_ip_address:
397 description: IP address of the server in the management network
398 value: {get_attr: [ManagementPort, ip_address]}