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]}
236 type: OS::Heat::StructuredConfig
238 group: os-apply-config
243 - heat_config_%{::deploy_config_name}
248 - all_nodes # provided by allNodesConfig
250 merge_behavior: deeper
254 service_names: {get_param: ServiceNames}
258 - {get_param: ServiceConfigSettings}
259 - values: {get_attr: [NetIpMap, net_ip_map]}
261 mapped_data: {get_param: CephStorageExtraConfig}
263 mapped_data: {get_param: ExtraConfig}
266 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
268 # Resource for site-specific injection of root certificate
270 depends_on: CephStorageDeployment
271 type: OS::TripleO::NodeTLSCAData
273 server: {get_resource: CephStorage}
275 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
276 CephStorageExtraConfigPre:
277 depends_on: CephStorageDeployment
278 type: OS::TripleO::CephStorageExtraConfigPre
280 server: {get_resource: CephStorage}
282 # Hook for site-specific additional pre-deployment config,
283 # applying to all nodes, e.g node registration/unregistration
285 depends_on: [CephStorageExtraConfigPre, NodeTLSCAData]
286 type: OS::TripleO::NodeExtraConfig
288 server: {get_resource: CephStorage}
291 type: OS::TripleO::Tasks::PackageUpdate
294 type: OS::Heat::SoftwareDeployment
296 config: {get_resource: UpdateConfig}
297 server: {get_resource: CephStorage}
300 get_param: UpdateIdentifier
304 description: IP address of the server in the ctlplane network
305 value: {get_attr: [CephStorage, networks, ctlplane, 0]}
307 description: Hostname of the server
308 value: {get_attr: [CephStorage, name]}
313 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
314 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
315 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
316 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
317 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
318 TENANTIP TENANTHOST.DOMAIN TENANTHOST
319 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
321 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephStorageHostnameResolveNetwork]}]}
322 DOMAIN: {get_param: CloudDomain}
323 PRIMARYHOST: {get_attr: [CephStorage, name]}
324 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
328 - - {get_attr: [CephStorage, name]}
330 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
334 - - {get_attr: [CephStorage, name]}
336 STORAGEIP: {get_attr: [StoragePort, ip_address]}
340 - - {get_attr: [CephStorage, name]}
342 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
346 - - {get_attr: [CephStorage, name]}
348 TENANTIP: {get_attr: [TenantPort, ip_address]}
352 - - {get_attr: [CephStorage, name]}
354 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
358 - - {get_attr: [CephStorage, name]}
360 nova_server_resource:
361 description: Heat resource handle for the ceph storage server
363 {get_resource: CephStorage}
365 description: IP address of the server in the external network
366 value: {get_attr: [ExternalPort, ip_address]}
367 internal_api_ip_address:
368 description: IP address of the server in the internal_api network
369 value: {get_attr: [InternalApiPort, ip_address]}
371 description: IP address of the server in the storage network
372 value: {get_attr: [StoragePort, ip_address]}
373 storage_mgmt_ip_address:
374 description: IP address of the server in the storage_mgmt network
375 value: {get_attr: [StorageMgmtPort, ip_address]}
377 description: IP address of the server in the tenant network
378 value: {get_attr: [TenantPort, ip_address]}
379 management_ip_address:
380 description: IP address of the server in the management network
381 value: {get_attr: [ManagementPort, ip_address]}