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
262 merge_behavior: deeper
266 service_names: {get_param: ServiceNames}
268 mapped_data: {get_param: ServiceConfigSettings}
270 raw_data: {get_file: hieradata/common.yaml}
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}
281 raw_data: {get_file: hieradata/ceph.yaml}
283 tripleo::packages::enable_install: {get_input: enable_package_install}
284 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
285 ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
286 ceph::profile::params::public_network: {get_input: ceph_public_network}
288 # Resource for site-specific injection of root certificate
290 depends_on: CephStorageDeployment
291 type: OS::TripleO::NodeTLSCAData
293 server: {get_resource: CephStorage}
295 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
296 CephStorageExtraConfigPre:
297 depends_on: CephStorageDeployment
298 type: OS::TripleO::CephStorageExtraConfigPre
300 server: {get_resource: CephStorage}
302 # Hook for site-specific additional pre-deployment config,
303 # applying to all nodes, e.g node registration/unregistration
305 depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
306 type: OS::TripleO::NodeExtraConfig
308 server: {get_resource: CephStorage}
311 type: OS::TripleO::Tasks::PackageUpdate
314 type: OS::Heat::SoftwareDeployment
316 config: {get_resource: UpdateConfig}
317 server: {get_resource: CephStorage}
320 get_param: UpdateIdentifier
324 description: IP address of the server in the ctlplane network
325 value: {get_attr: [CephStorage, networks, ctlplane, 0]}
327 description: Hostname of the server
328 value: {get_attr: [CephStorage, name]}
333 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
334 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
335 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
336 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
337 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
338 TENANTIP TENANTHOST.DOMAIN TENANTHOST
339 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
341 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
342 DOMAIN: {get_param: CloudDomain}
343 PRIMARYHOST: {get_attr: [CephStorage, name]}
344 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
348 - - {get_attr: [CephStorage, name]}
350 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
354 - - {get_attr: [CephStorage, name]}
356 STORAGEIP: {get_attr: [StoragePort, ip_address]}
360 - - {get_attr: [CephStorage, name]}
362 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
366 - - {get_attr: [CephStorage, name]}
368 TENANTIP: {get_attr: [TenantPort, ip_address]}
372 - - {get_attr: [CephStorage, name]}
374 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
378 - - {get_attr: [CephStorage, name]}
380 nova_server_resource:
381 description: Heat resource handle for the ceph storage server
383 {get_resource: CephStorage}
385 description: IP address of the server in the external network
386 value: {get_attr: [ExternalPort, ip_address]}
387 internal_api_ip_address:
388 description: IP address of the server in the internal_api network
389 value: {get_attr: [InternalApiPort, ip_address]}
391 description: IP address of the server in the storage network
392 value: {get_attr: [StoragePort, ip_address]}
393 storage_mgmt_ip_address:
394 description: IP address of the server in the storage_mgmt network
395 value: {get_attr: [StorageMgmtPort, ip_address]}
397 description: IP address of the server in the tenant network
398 value: {get_attr: [TenantPort, ip_address]}
399 management_ip_address:
400 description: IP address of the server in the management network
401 value: {get_attr: [ManagementPort, ip_address]}