1 heat_template_version: 2015-04-30
2 description: 'OpenStack ceph storage node configured by Puppet'
5 description: Flavor for the Ceph Storage node.
8 - custom_constraint: nova.flavor
11 default: overcloud-ceph-storage
13 - custom_constraint: glance.image
15 default: 'REBUILD_PRESERVE_EPHEMERAL'
16 description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
19 description: Name of an existing Nova key pair to enable SSH access to the instances
23 - custom_constraint: nova.keypair
26 description: Set to true to enable package installation via Puppet
30 description: Mapping of service_name -> network name. Typically set
31 via parameter_defaults in the resource registry.
37 Setting to a previously unused value during stack-update will trigger
38 package update on all nodes
41 default: '' # Defaults to Heat created hostname
45 description: Optional mapping to override hostnames
49 Additional hiera configuration to inject into the cluster. Note
50 that CephStorageExtraConfig takes precedence over ExtraConfig.
52 CephStorageExtraConfig:
55 Role specific additional hiera configuration to inject into the cluster.
60 NetworkDeploymentActions:
61 type: comma_delimited_list
63 Heat action when to apply network configuration changes
65 SoftwareConfigTransport:
66 default: POLL_SERVER_CFN
68 How the server should receive the metadata required for software configuration.
71 - 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.
86 description: Optional scheduler hints to pass to nova
91 ServiceConfigSettings:
96 description: Command which will be run whenever configuration data changes
97 default: os-refresh-config --timeout 14400
101 type: OS::Nova::Server
104 command: {get_param: ConfigCommand}
106 image: {get_param: Image}
107 image_update_policy: {get_param: ImageUpdatePolicy}
108 flavor: {get_param: Flavor}
109 key_name: {get_param: KeyName}
112 user_data_format: SOFTWARE_CONFIG
113 user_data: {get_resource: UserData}
116 template: {get_param: Hostname}
117 params: {get_param: HostnameMap}
118 software_config_transport: {get_param: SoftwareConfigTransport}
119 metadata: {get_param: ServerMetadata}
120 scheduler_hints: {get_param: SchedulerHints}
122 # Combine the NodeAdminUserData and NodeUserData mime archives
124 type: OS::Heat::MultipartMime
127 - config: {get_resource: NodeAdminUserData}
129 - config: {get_resource: NodeUserData}
132 # Creates the "heat-admin" user if configured via the environment
133 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
135 type: OS::TripleO::NodeAdminUserData
137 # For optional operator additional userdata
138 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
140 type: OS::TripleO::NodeUserData
143 type: OS::TripleO::CephStorage::Ports::ExternalPort
145 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
146 IPPool: {get_param: CephStorageIPs}
147 NodeIndex: {get_param: NodeIndex}
150 type: OS::TripleO::CephStorage::Ports::InternalApiPort
152 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
153 IPPool: {get_param: CephStorageIPs}
154 NodeIndex: {get_param: NodeIndex}
157 type: OS::TripleO::CephStorage::Ports::StoragePort
159 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
160 IPPool: {get_param: CephStorageIPs}
161 NodeIndex: {get_param: NodeIndex}
164 type: OS::TripleO::CephStorage::Ports::StorageMgmtPort
166 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
167 IPPool: {get_param: CephStorageIPs}
168 NodeIndex: {get_param: NodeIndex}
171 type: OS::TripleO::CephStorage::Ports::TenantPort
173 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
174 IPPool: {get_param: CephStorageIPs}
175 NodeIndex: {get_param: NodeIndex}
178 type: OS::TripleO::CephStorage::Ports::ManagementPort
180 ControlPlaneIP: {get_attr: [CephStorage, networks, ctlplane, 0]}
181 IPPool: {get_param: CephStorageIPs}
182 NodeIndex: {get_param: NodeIndex}
185 type: OS::TripleO::CephStorage::Net::SoftwareConfig
187 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
188 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
189 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
190 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
191 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
192 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
193 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
196 type: OS::TripleO::Network::Ports::NetIpMap
198 ControlPlaneIp: {get_attr: [CephStorage, networks, ctlplane, 0]}
199 ExternalIp: {get_attr: [ExternalPort, ip_address]}
200 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
201 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
202 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
203 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
204 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
205 StorageIp: {get_attr: [StoragePort, ip_address]}
206 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
207 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
208 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
209 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
210 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
211 TenantIp: {get_attr: [TenantPort, ip_address]}
212 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
213 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
214 ManagementIp: {get_attr: [ManagementPort, ip_address]}
215 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
216 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
219 type: OS::TripleO::SoftwareDeployment
221 name: NetworkDeployment
222 config: {get_resource: NetworkConfig}
223 server: {get_resource: CephStorage}
224 actions: {get_param: NetworkDeploymentActions}
226 CephStorageDeployment:
227 type: OS::Heat::StructuredDeployment
228 depends_on: NetworkDeployment
230 name: CephStorageDeployment
231 config: {get_resource: CephStorageConfig}
232 server: {get_resource: CephStorage}
234 enable_package_install: {get_param: EnablePackageInstall}
235 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
236 ceph_cluster_network: {get_attr: [NetIpMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
237 ceph_public_network: {get_attr: [NetIpMap, net_ip_subnet_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
240 type: OS::Heat::StructuredConfig
242 group: os-apply-config
247 - heat_config_%{::deploy_config_name}
251 - ceph_cluster # provided by CephClusterConfig
253 - all_nodes # provided by allNodesConfig
257 merge_behavior: deeper
260 mapped_data: {get_param: ServiceConfigSettings}
262 raw_data: {get_file: hieradata/common.yaml}
265 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
266 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
267 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
269 mapped_data: {get_param: CephStorageExtraConfig}
271 mapped_data: {get_param: ExtraConfig}
273 raw_data: {get_file: hieradata/ceph.yaml}
275 tripleo::packages::enable_install: {get_input: enable_package_install}
276 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
277 ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
278 ceph::profile::params::public_network: {get_input: ceph_public_network}
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
319 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
320 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
321 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
322 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
323 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
324 TENANTIP TENANTHOST.DOMAIN TENANTHOST
325 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
327 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
328 DOMAIN: {get_param: CloudDomain}
329 PRIMARYHOST: {get_attr: [CephStorage, name]}
330 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
334 - - {get_attr: [CephStorage, name]}
336 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
340 - - {get_attr: [CephStorage, name]}
342 STORAGEIP: {get_attr: [StoragePort, ip_address]}
346 - - {get_attr: [CephStorage, name]}
348 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
352 - - {get_attr: [CephStorage, name]}
354 TENANTIP: {get_attr: [TenantPort, ip_address]}
358 - - {get_attr: [CephStorage, name]}
360 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
364 - - {get_attr: [CephStorage, name]}
366 nova_server_resource:
367 description: Heat resource handle for the ceph storage server
369 {get_resource: CephStorage}
371 description: IP address of the server in the external network
372 value: {get_attr: [ExternalPort, ip_address]}
373 internal_api_ip_address:
374 description: IP address of the server in the internal_api network
375 value: {get_attr: [InternalApiPort, ip_address]}
377 description: IP address of the server in the storage network
378 value: {get_attr: [StoragePort, ip_address]}
379 storage_mgmt_ip_address:
380 description: IP address of the server in the storage_mgmt network
381 value: {get_attr: [StorageMgmtPort, ip_address]}
383 description: IP address of the server in the tenant network
384 value: {get_attr: [TenantPort, ip_address]}
385 management_ip_address:
386 description: IP address of the server in the management network
387 value: {get_attr: [ManagementPort, ip_address]}
389 description: identifier which changes if the node configuration may need re-applying
393 - - {get_attr: [CephStorageDeployment, deploy_stdout]}
394 - {get_attr: [NodeTLSCAData, deploy_stdout]}
395 - {get_attr: [CephStorageExtraConfigPre, deploy_stdout]}
396 - {get_param: UpdateIdentifier}