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.
32 description: Mapping of service endpoint -> protocol. Typically set
33 via parameter_defaults in the resource registry.
39 Setting to a previously unused value during stack-update will trigger
40 package update on all nodes
43 default: '' # Defaults to Heat created hostname
47 description: Optional mapping to override hostnames
51 Additional hiera configuration to inject into the cluster. Note
52 that CephStorageExtraConfig takes precedence over ExtraConfig.
54 CephStorageExtraConfig:
57 Role specific additional hiera configuration to inject into the cluster.
62 NetworkDeploymentActions:
63 type: comma_delimited_list
65 Heat action when to apply network configuration changes
67 SoftwareConfigTransport:
68 default: POLL_SERVER_CFN
70 How the server should receive the metadata required for software configuration.
73 - 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
98 MonitoringSubscriptions:
99 type: comma_delimited_list
103 description: Command which will be run whenever configuration data changes
104 default: os-refresh-config --timeout 14400
108 type: OS::TripleO::Server
111 command: {get_param: ConfigCommand}
113 image: {get_param: CephStorageImage}
114 image_update_policy: {get_param: ImageUpdatePolicy}
115 flavor: {get_param: OvercloudCephStorageFlavor}
116 key_name: {get_param: KeyName}
119 user_data_format: SOFTWARE_CONFIG
120 user_data: {get_resource: UserData}
123 template: {get_param: Hostname}
124 params: {get_param: HostnameMap}
125 software_config_transport: {get_param: SoftwareConfigTransport}
126 metadata: {get_param: ServerMetadata}
127 scheduler_hints: {get_param: CephStorageSchedulerHints}
129 # Combine the NodeAdminUserData and NodeUserData mime archives
131 type: OS::Heat::MultipartMime
134 - config: {get_resource: NodeAdminUserData}
136 - config: {get_resource: NodeUserData}
139 # Creates the "heat-admin" user if configured via the environment
140 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
142 type: OS::TripleO::NodeAdminUserData
144 # For optional operator additional userdata
145 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
147 type: OS::TripleO::NodeUserData
150 type: OS::TripleO::CephStorage::Ports::ExternalPort
152 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
153 IPPool: {get_param: CephStorageIPs}
154 NodeIndex: {get_param: NodeIndex}
157 type: OS::TripleO::CephStorage::Ports::InternalApiPort
159 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
160 IPPool: {get_param: CephStorageIPs}
161 NodeIndex: {get_param: NodeIndex}
164 type: OS::TripleO::CephStorage::Ports::StoragePort
166 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
167 IPPool: {get_param: CephStorageIPs}
168 NodeIndex: {get_param: NodeIndex}
171 type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
173 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
174 IPPool: {get_param: CephStorageIPs}
175 NodeIndex: {get_param: NodeIndex}
178 type: OS::TripleO::CephStorage::Ports::TenantPort
180 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
181 IPPool: {get_param: CephStorageIPs}
182 NodeIndex: {get_param: NodeIndex}
185 type: OS::TripleO::CephStorage::Ports::ManagementPort
187 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
188 IPPool: {get_param: CephStorageIPs}
189 NodeIndex: {get_param: NodeIndex}
192 type: OS::TripleO::CephStorage::Net::SoftwareConfig
194 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
195 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
196 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
197 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
198 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
199 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
200 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
203 type: OS::TripleO::Network::Ports::NetIpMap
205 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
206 ExternalIp: {get_attr: [ExternalPort, ip_address]}
207 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
208 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
209 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
210 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
211 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
212 StorageIp: {get_attr: [StoragePort, ip_address]}
213 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
214 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
215 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
216 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
217 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
218 TenantIp: {get_attr: [TenantPort, ip_address]}
219 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
220 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
221 ManagementIp: {get_attr: [ManagementPort, ip_address]}
222 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
223 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
226 type: OS::TripleO::SoftwareDeployment
228 name: NetworkDeployment
229 config: {get_resource: NetworkConfig}
230 server: {get_resource: CephStorage}
231 actions: {get_param: NetworkDeploymentActions}
233 CephStorageDeployment:
234 type: OS::Heat::StructuredDeployment
235 depends_on: NetworkDeployment
237 name: CephStorageDeployment
238 config: {get_resource: CephStorageConfig}
239 server: {get_resource: CephStorage}
241 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
244 type: OS::Heat::StructuredConfig
246 group: os-apply-config
251 - heat_config_%{::deploy_config_name}
257 - bootstrap_node # provided by allNodesConfig
258 - all_nodes # provided by allNodesConfig
259 - vip_data # provided by allNodesConfig
261 merge_behavior: deeper
265 service_names: {get_param: ServiceNames}
266 sensu::subscriptions: {get_param: MonitoringSubscriptions}
270 - {get_param: ServiceConfigSettings}
271 - values: {get_attr: [NetIpMap, net_ip_map]}
273 mapped_data: {get_param: CephStorageExtraConfig}
275 mapped_data: {get_param: ExtraConfig}
278 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
280 # Resource for site-specific injection of root certificate
282 depends_on: CephStorageDeployment
283 type: OS::TripleO::NodeTLSCAData
285 server: {get_resource: CephStorage}
287 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
288 CephStorageExtraConfigPre:
289 depends_on: CephStorageDeployment
290 type: OS::TripleO::CephStorageExtraConfigPre
292 server: {get_resource: CephStorage}
294 # Hook for site-specific additional pre-deployment config,
295 # applying to all nodes, e.g node registration/unregistration
297 depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
298 type: OS::TripleO::NodeExtraConfig
300 server: {get_resource: CephStorage}
303 type: OS::TripleO::Tasks::PackageUpdate
306 type: OS::Heat::SoftwareDeployment
308 config: {get_resource: UpdateConfig}
309 server: {get_resource: CephStorage}
312 get_param: UpdateIdentifier
316 description: IP address of the server in the ctlplane network
317 value: {get_attr: [CephStorage, networks, ctlplane, 0]}
319 description: Hostname of the server
320 value: {get_attr: [CephStorage, name]}
322 description: Mapping of network names to hostnames
327 - - {get_attr: [CephStorage, name]}
329 - {get_param: CloudDomain}
333 - - {get_attr: [CephStorage, name]}
335 - {get_param: CloudDomain}
339 - - {get_attr: [CephStorage, name]}
341 - {get_param: CloudDomain}
345 - - {get_attr: [CephStorage, name]}
347 - {get_param: CloudDomain}
351 - - {get_attr: [CephStorage, name]}
353 - {get_param: CloudDomain}
357 - - {get_attr: [CephStorage, name]}
359 - {get_param: CloudDomain}
363 - - {get_attr: [CephStorage, name]}
365 - {get_param: CloudDomain}
370 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
371 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
372 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
373 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
374 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
375 TENANTIP TENANTHOST.DOMAIN TENANTHOST
376 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
377 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
379 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
380 DOMAIN: {get_param: CloudDomain}
381 PRIMARYHOST: {get_attr: [CephStorage, name]}
382 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
386 - - {get_attr: [CephStorage, name]}
388 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
392 - - {get_attr: [CephStorage, name]}
394 STORAGEIP: {get_attr: [StoragePort, ip_address]}
398 - - {get_attr: [CephStorage, name]}
400 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
404 - - {get_attr: [CephStorage, name]}
406 TENANTIP: {get_attr: [TenantPort, ip_address]}
410 - - {get_attr: [CephStorage, name]}
412 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
416 - - {get_attr: [CephStorage, name]}
418 CTLPLANEIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
422 - - {get_attr: [CephStorage, name]}
424 nova_server_resource:
425 description: Heat resource handle for the ceph storage server
427 {get_resource: CephStorage}
429 description: IP address of the server in the external network
430 value: {get_attr: [ExternalPort, ip_address]}
431 internal_api_ip_address:
432 description: IP address of the server in the internal_api network
433 value: {get_attr: [InternalApiPort, ip_address]}
435 description: IP address of the server in the storage network
436 value: {get_attr: [StoragePort, ip_address]}
437 storage_mgmt_ip_address:
438 description: IP address of the server in the storage_mgmt network
439 value: {get_attr: [StorageMgmtPort, ip_address]}
441 description: IP address of the server in the tenant network
442 value: {get_attr: [TenantPort, ip_address]}
443 management_ip_address:
444 description: IP address of the server in the management network
445 value: {get_attr: [ManagementPort, ip_address]}