1 heat_template_version: 2016-10-14
2 description: 'OpenStack cinder storage configured by Puppet'
5 default: overcloud-full
8 - custom_constraint: glance.image
12 Additional hiera configuration to inject into the cluster. Note
13 that BlockStorageExtraConfig takes precedence over ExtraConfig.
15 BlockStorageExtraConfig:
18 Role specific additional hiera configuration to inject into the cluster.
23 OvercloudBlockStorageFlavor:
24 description: Flavor for block storage nodes to request when deploying.
28 - custom_constraint: nova.flavor
31 description: Name of an existing Nova key pair to enable SSH access to the instances
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
48 description: Mapping of service_name -> network name. Typically set
49 via parameter_defaults in the resource registry.
53 description: Mapping of service endpoint -> protocol. Typically set
54 via parameter_defaults in the resource registry.
56 NetworkDeploymentActions:
57 type: comma_delimited_list
59 Heat action when to apply network configuration changes
61 SoftwareConfigTransport:
62 default: POLL_SERVER_CFN
64 How the server should receive the metadata required for software configuration.
67 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
71 The DNS domain used for the hosts. This should match the dhcp_domain
72 configured in the Undercloud neutron. Defaults to localdomain.
76 Extra properties or metadata passed to Nova for the created nodes in
77 the overcloud. It's accessible via the Nova metadata API.
79 BlockStorageSchedulerHints:
81 description: Optional scheduler hints to pass to nova
86 ServiceConfigSettings:
90 type: comma_delimited_list
92 MonitoringSubscriptions:
93 type: comma_delimited_list
97 description: Command which will be run whenever configuration data changes
98 default: os-refresh-config --timeout 14400
102 type: OS::TripleO::Server
105 command: {get_param: ConfigCommand}
108 {get_param: BlockStorageImage}
109 flavor: {get_param: OvercloudBlockStorageFlavor}
110 key_name: {get_param: KeyName}
113 user_data_format: SOFTWARE_CONFIG
114 user_data: {get_resource: UserData}
117 template: {get_param: Hostname}
118 params: {get_param: HostnameMap}
119 software_config_transport: {get_param: SoftwareConfigTransport}
120 metadata: {get_param: ServerMetadata}
121 scheduler_hints: {get_param: BlockStorageSchedulerHints}
123 # Combine the NodeAdminUserData and NodeUserData mime archives
125 type: OS::Heat::MultipartMime
128 - config: {get_resource: NodeAdminUserData}
130 - config: {get_resource: NodeUserData}
133 # Creates the "heat-admin" user if configured via the environment
134 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
136 type: OS::TripleO::NodeAdminUserData
138 # For optional operator additional userdata
139 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
141 type: OS::TripleO::NodeUserData
144 type: OS::TripleO::BlockStorage::Ports::ExternalPort
146 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
147 IPPool: {get_param: BlockStorageIPs}
148 NodeIndex: {get_param: NodeIndex}
151 type: OS::TripleO::BlockStorage::Ports::InternalApiPort
153 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
154 IPPool: {get_param: BlockStorageIPs}
155 NodeIndex: {get_param: NodeIndex}
158 type: OS::TripleO::BlockStorage::Ports::StoragePort
160 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
161 IPPool: {get_param: BlockStorageIPs}
162 NodeIndex: {get_param: NodeIndex}
165 type: OS::TripleO::BlockStorage::Ports::StorageMgmtPort
167 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
168 IPPool: {get_param: BlockStorageIPs}
169 NodeIndex: {get_param: NodeIndex}
172 type: OS::TripleO::BlockStorage::Ports::TenantPort
174 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
175 IPPool: {get_param: BlockStorageIPs}
176 NodeIndex: {get_param: NodeIndex}
179 type: OS::TripleO::BlockStorage::Ports::ManagementPort
181 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
182 IPPool: {get_param: BlockStorageIPs}
183 NodeIndex: {get_param: NodeIndex}
186 type: OS::TripleO::BlockStorage::Net::SoftwareConfig
188 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
189 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
190 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
191 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
192 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
193 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
194 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
197 type: OS::TripleO::Network::Ports::NetIpMap
199 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
200 ExternalIp: {get_attr: [ExternalPort, ip_address]}
201 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
202 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
203 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
204 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
205 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
206 StorageIp: {get_attr: [StoragePort, ip_address]}
207 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
208 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
209 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
210 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
211 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
212 TenantIp: {get_attr: [TenantPort, ip_address]}
213 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
214 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
215 ManagementIp: {get_attr: [ManagementPort, ip_address]}
216 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
217 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
220 type: OS::TripleO::SoftwareDeployment
222 name: NetworkDeployment
223 config: {get_resource: NetworkConfig}
224 server: {get_resource: BlockStorage}
225 actions: {get_param: NetworkDeploymentActions}
227 BlockStorageDeployment:
228 type: OS::Heat::StructuredDeployment
229 depends_on: NetworkDeployment
231 name: BlockStorageDeployment
232 server: {get_resource: BlockStorage}
233 config: {get_resource: BlockStorageConfig}
235 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
237 # Map heat metadata into hiera datafiles
239 type: OS::Heat::StructuredConfig
241 group: os-apply-config
246 - heat_config_%{::deploy_config_name}
252 - bootstrap_node # provided by allNodesConfig
253 - all_nodes # provided by allNodesConfig
254 - vip_data # provided by allNodesConfig
256 merge_behavior: deeper
260 service_names: {get_param: ServiceNames}
261 sensu::subscriptions: {get_param: MonitoringSubscriptions}
265 - {get_param: ServiceConfigSettings}
266 - values: {get_attr: [NetIpMap, net_ip_map]}
268 mapped_data: {get_param: BlockStorageExtraConfig}
270 mapped_data: {get_param: ExtraConfig}
273 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
275 # Resource for site-specific injection of root certificate
277 depends_on: BlockStorageDeployment
278 type: OS::TripleO::NodeTLSCAData
280 server: {get_resource: BlockStorage}
282 # Hook for site-specific additional pre-deployment config,
283 # applying to all nodes, e.g node registration/unregistration
285 depends_on: NodeTLSCAData
286 type: OS::TripleO::NodeExtraConfig
288 server: {get_resource: BlockStorage}
291 type: OS::TripleO::Tasks::PackageUpdate
294 type: OS::Heat::SoftwareDeployment
296 name: UpdateDeployment
297 config: {get_resource: UpdateConfig}
298 server: {get_resource: BlockStorage}
301 get_param: UpdateIdentifier
305 description: IP address of the server in the ctlplane network
306 value: {get_attr: [BlockStorage, networks, ctlplane, 0]}
308 description: Hostname of the server
309 value: {get_attr: [BlockStorage, name]}
311 description: Mapping of network names to hostnames
316 - - {get_attr: [BlockStorage, name]}
318 - {get_param: CloudDomain}
322 - - {get_attr: [BlockStorage, name]}
324 - {get_param: CloudDomain}
328 - - {get_attr: [BlockStorage, name]}
330 - {get_param: CloudDomain}
334 - - {get_attr: [BlockStorage, name]}
336 - {get_param: CloudDomain}
340 - - {get_attr: [BlockStorage, name]}
342 - {get_param: CloudDomain}
346 - - {get_attr: [BlockStorage, name]}
348 - {get_param: CloudDomain}
352 - - {get_attr: [BlockStorage, name]}
354 - {get_param: CloudDomain}
359 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
360 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
361 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
362 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
363 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
364 TENANTIP TENANTHOST.DOMAIN TENANTHOST
365 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
366 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
368 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
369 DOMAIN: {get_param: CloudDomain}
370 PRIMARYHOST: {get_attr: [BlockStorage, name]}
371 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
375 - - {get_attr: [BlockStorage, name]}
377 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
381 - - {get_attr: [BlockStorage, name]}
383 STORAGEIP: {get_attr: [StoragePort, ip_address]}
387 - - {get_attr: [BlockStorage, name]}
389 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
393 - - {get_attr: [BlockStorage, name]}
395 TENANTIP: {get_attr: [TenantPort, ip_address]}
399 - - {get_attr: [BlockStorage, name]}
401 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
405 - - {get_attr: [BlockStorage, name]}
407 CTLPLANEIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
411 - - {get_attr: [BlockStorage, name]}
413 nova_server_resource:
414 description: Heat resource handle for the block storage server
416 {get_resource: BlockStorage}
418 description: IP address of the server in the external network
419 value: {get_attr: [ExternalPort, ip_address]}
420 internal_api_ip_address:
421 description: IP address of the server in the internal_api network
422 value: {get_attr: [InternalApiPort, ip_address]}
424 description: IP address of the server in the storage network
425 value: {get_attr: [StoragePort, ip_address]}
426 storage_mgmt_ip_address:
427 description: IP address of the server in the storage_mgmt network
428 value: {get_attr: [StorageMgmtPort, ip_address]}
430 description: IP address of the server in the tenant network
431 value: {get_attr: [TenantPort, ip_address]}
432 management_ip_address:
433 description: IP address of the server in the management network
434 value: {get_attr: [ManagementPort, ip_address]}