1 heat_template_version: 2015-04-30
2 description: 'OpenStack cinder storage configured by Puppet'
5 default: overcloud-cinder-volume
10 Additional hiera configuration to inject into the cluster. Note
11 that BlockStorageExtraConfig takes precedence over ExtraConfig.
13 BlockStorageExtraConfig:
16 Role specific additional hiera configuration to inject into the cluster.
22 description: Flavor for block storage nodes to request when deploying.
25 - custom_constraint: nova.flavor
28 description: Name of an existing Nova key pair to enable SSH access to the instances
30 SnmpdReadonlyUserName:
32 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
34 SnmpdReadonlyUserPassword:
35 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
40 description: Comma-separated list of ntp servers
41 type: comma_delimited_list
44 description: Set to true to enable package installation via Puppet
50 Setting to a previously unused value during stack-update will trigger
51 package update on all nodes
54 default: '' # Defaults to Heat created hostname
58 description: Optional mapping to override hostnames
61 description: Mapping of service_name -> network name. Typically set
62 via parameter_defaults in the resource registry.
66 description: The timezone to be set on Cinder nodes.
68 NetworkDeploymentActions:
69 type: comma_delimited_list
71 Heat action when to apply network configuration changes
73 SoftwareConfigTransport:
74 default: POLL_SERVER_CFN
76 How the server should receive the metadata required for software configuration.
79 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
84 The DNS domain used for the hosts. This should match the dhcp_domain
85 configured in the Undercloud neutron. Defaults to localdomain.
89 Extra properties or metadata passed to Nova for the created nodes in
90 the overcloud. It's accessible via the Nova metadata API.
94 description: Optional scheduler hints to pass to nova
99 ServiceConfigSettings:
105 type: OS::Nova::Server
109 flavor: {get_param: Flavor}
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: SchedulerHints}
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 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
236 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
237 cinder_iscsi_ip_address:
241 IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
242 ntp_servers: {get_param: NtpServer}
243 timezone: {get_param: TimeZone}
244 enable_package_install: {get_param: EnablePackageInstall}
245 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
247 # Map heat metadata into hiera datafiles
249 type: OS::Heat::StructuredConfig
251 group: os-apply-config
256 - heat_config_%{::deploy_config_name}
261 - all_nodes # provided by allNodesConfig
265 merge_behavior: deeper
268 mapped_data: {get_param: ServiceConfigSettings}
270 raw_data: {get_file: hieradata/common.yaml}
273 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
274 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
275 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
277 mapped_data: {get_param: BlockStorageExtraConfig}
279 mapped_data: {get_param: ExtraConfig}
281 raw_data: {get_file: hieradata/volume.yaml}
284 tripleo::profile::base::cinder::volume::iscsi::cinder_iscsi_ip_address: {get_input: cinder_iscsi_ip_address}
285 ntp::servers: {get_input: ntp_servers}
286 timezone::timezone: {get_input: timezone}
287 tripleo::packages::enable_install: {get_input: enable_package_install}
288 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
289 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
290 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
292 # Resource for site-specific injection of root certificate
294 depends_on: BlockStorageDeployment
295 type: OS::TripleO::NodeTLSCAData
297 server: {get_resource: BlockStorage}
299 # Hook for site-specific additional pre-deployment config,
300 # applying to all nodes, e.g node registration/unregistration
302 depends_on: NodeTLSCAData
303 type: OS::TripleO::NodeExtraConfig
305 server: {get_resource: BlockStorage}
308 type: OS::TripleO::Tasks::PackageUpdate
311 type: OS::Heat::SoftwareDeployment
313 name: UpdateDeployment
314 config: {get_resource: UpdateConfig}
315 server: {get_resource: BlockStorage}
318 get_param: UpdateIdentifier
325 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
326 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
327 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
328 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
329 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
330 TENANTIP TENANTHOST.DOMAIN TENANTHOST
331 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
333 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
334 DOMAIN: {get_param: CloudDomain}
335 PRIMARYHOST: {get_attr: [BlockStorage, name]}
336 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
340 - - {get_attr: [BlockStorage, name]}
342 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
346 - - {get_attr: [BlockStorage, name]}
348 STORAGEIP: {get_attr: [StoragePort, ip_address]}
352 - - {get_attr: [BlockStorage, name]}
354 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
358 - - {get_attr: [BlockStorage, name]}
360 TENANTIP: {get_attr: [TenantPort, ip_address]}
364 - - {get_attr: [BlockStorage, name]}
366 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
370 - - {get_attr: [BlockStorage, name]}
372 nova_server_resource:
373 description: Heat resource handle for the block storage server
375 {get_resource: BlockStorage}
377 description: IP address of the server in the external network
378 value: {get_attr: [ExternalPort, ip_address]}
379 internal_api_ip_address:
380 description: IP address of the server in the internal_api network
381 value: {get_attr: [InternalApiPort, ip_address]}
383 description: IP address of the server in the storage network
384 value: {get_attr: [StoragePort, ip_address]}
385 storage_mgmt_ip_address:
386 description: IP address of the server in the storage_mgmt network
387 value: {get_attr: [StorageMgmtPort, ip_address]}
389 description: IP address of the server in the tenant network
390 value: {get_attr: [TenantPort, ip_address]}
391 management_ip_address:
392 description: IP address of the server in the management network
393 value: {get_attr: [ManagementPort, ip_address]}
395 description: identifier which changes if the node configuration may need re-applying
399 - - {get_attr: [BlockStorageDeployment, deploy_stdout]}
400 - {get_attr: [NodeTLSCAData, deploy_stdout]}
401 - {get_param: UpdateIdentifier}