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: Mapping of service_name -> network name. Typically set
28 via parameter_defaults in the resource registry.
34 Setting to a previously unused value during stack-update will trigger
35 package update on all nodes
38 default: '' # Defaults to Heat created hostname
42 description: Optional mapping to override hostnames
46 Additional hiera configuration to inject into the cluster. Note
47 that CephStorageExtraConfig takes precedence over ExtraConfig.
49 CephStorageExtraConfig:
52 Role specific additional hiera configuration to inject into the cluster.
57 NetworkDeploymentActions:
58 type: comma_delimited_list
60 Heat action when to apply network configuration changes
62 SoftwareConfigTransport:
63 default: POLL_SERVER_CFN
65 How the server should receive the metadata required for software configuration.
68 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
72 The DNS domain used for the hosts. This should match the dhcp_domain
73 configured in the Undercloud neutron. Defaults to localdomain.
77 Extra properties or metadata passed to Nova for the created nodes in
78 the overcloud. It's accessible via the Nova metadata API.
80 CephStorageSchedulerHints:
82 description: Optional scheduler hints to pass to nova
87 ServiceConfigSettings:
91 type: comma_delimited_list
95 description: Command which will be run whenever configuration data changes
96 default: os-refresh-config --timeout 14400
100 type: OS::TripleO::Server
103 command: {get_param: ConfigCommand}
105 image: {get_param: CephStorageImage}
106 image_update_policy: {get_param: ImageUpdatePolicy}
107 flavor: {get_param: OvercloudCephStorageFlavor}
108 key_name: {get_param: KeyName}
111 user_data_format: SOFTWARE_CONFIG
112 user_data: {get_resource: UserData}
115 template: {get_param: Hostname}
116 params: {get_param: HostnameMap}
117 software_config_transport: {get_param: SoftwareConfigTransport}
118 metadata: {get_param: ServerMetadata}
119 scheduler_hints: {get_param: CephStorageSchedulerHints}
121 # Combine the NodeAdminUserData and NodeUserData mime archives
123 type: OS::Heat::MultipartMime
126 - config: {get_resource: NodeAdminUserData}
128 - config: {get_resource: NodeUserData}
131 # Creates the "heat-admin" user if configured via the environment
132 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
134 type: OS::TripleO::NodeAdminUserData
136 # For optional operator additional userdata
137 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
139 type: OS::TripleO::NodeUserData
142 type: OS::TripleO::CephStorage::Ports::ExternalPort
144 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
145 IPPool: {get_param: CephStorageIPs}
146 NodeIndex: {get_param: NodeIndex}
149 type: OS::TripleO::CephStorage::Ports::InternalApiPort
151 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
152 IPPool: {get_param: CephStorageIPs}
153 NodeIndex: {get_param: NodeIndex}
156 type: OS::TripleO::CephStorage::Ports::StoragePort
158 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
159 IPPool: {get_param: CephStorageIPs}
160 NodeIndex: {get_param: NodeIndex}
163 type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
165 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
166 IPPool: {get_param: CephStorageIPs}
167 NodeIndex: {get_param: NodeIndex}
170 type: OS::TripleO::CephStorage::Ports::TenantPort
172 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
173 IPPool: {get_param: CephStorageIPs}
174 NodeIndex: {get_param: NodeIndex}
177 type: OS::TripleO::CephStorage::Ports::ManagementPort
179 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
180 IPPool: {get_param: CephStorageIPs}
181 NodeIndex: {get_param: NodeIndex}
184 type: OS::TripleO::CephStorage::Net::SoftwareConfig
186 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
187 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
188 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
189 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
190 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
191 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
192 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
195 type: OS::TripleO::Network::Ports::NetIpMap
197 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
198 ExternalIp: {get_attr: [ExternalPort, ip_address]}
199 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
200 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
201 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
202 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
203 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
204 StorageIp: {get_attr: [StoragePort, ip_address]}
205 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
206 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
207 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
208 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
209 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
210 TenantIp: {get_attr: [TenantPort, ip_address]}
211 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
212 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
213 ManagementIp: {get_attr: [ManagementPort, ip_address]}
214 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
215 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
218 type: OS::TripleO::SoftwareDeployment
220 name: NetworkDeployment
221 config: {get_resource: NetworkConfig}
222 server: {get_resource: CephStorage}
223 actions: {get_param: NetworkDeploymentActions}
225 CephStorageDeployment:
226 type: OS::Heat::StructuredDeployment
227 depends_on: NetworkDeployment
229 name: CephStorageDeployment
230 config: {get_resource: CephStorageConfig}
231 server: {get_resource: CephStorage}
233 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
234 ceph_cluster_network:
239 template: "NETWORK_subnet"
241 NETWORK: {get_param: [ServiceNetMap, CephClusterNetwork]}
247 template: "NETWORK_subnet"
249 NETWORK: {get_param: [ServiceNetMap, CephPublicNetwork]}
252 type: OS::Heat::StructuredConfig
254 group: os-apply-config
259 - heat_config_%{::deploy_config_name}
264 - ceph_cluster # provided by CephClusterConfig
266 - all_nodes # provided by allNodesConfig
268 merge_behavior: deeper
272 service_names: {get_param: ServiceNames}
276 - {get_param: ServiceConfigSettings}
277 - values: {get_attr: [NetIpMap, net_ip_map]}
279 mapped_data: {get_param: CephStorageExtraConfig}
281 mapped_data: {get_param: ExtraConfig}
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]}