1 heat_template_version: 2015-04-30
2 description: 'OpenStack cinder storage configured by Puppet'
5 default: overcloud-cinder-volume
7 CinderEnableIscsiBackend:
9 description: Whether to enable or not the Iscsi backend for Cinder
13 description: The iSCSI helper to use with cinder.
15 CinderLVMLoopDeviceSize:
17 description: The size of the loopback file used by the cinder LVM driver.
20 description: The password for the cinder service and db account, used by cinder-api.
25 description: Set to True to enable debugging on all services.
27 VirtualIP: # deprecated. Use per service VIPs instead.
33 Additional hiera configuration to inject into the cluster. Note
34 that BlockStorageExtraConfig takes precedence over ExtraConfig.
36 BlockStorageExtraConfig:
39 Role specific additional hiera configuration to inject into the cluster.
45 description: Flavor for block storage nodes to request when deploying.
48 - custom_constraint: nova.flavor
51 description: Name of an existing Nova key pair to enable SSH access to the instances
62 Rabbit client subscriber parameter to specify
63 an SSL connection to the RabbitMQ host.
67 description: Set rabbit subscriber port, change this if using SSL
69 SnmpdReadonlyUserName:
71 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
73 SnmpdReadonlyUserPassword:
74 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
79 description: Comma-separated list of ntp servers
80 type: comma_delimited_list
83 description: Set to true to enable package installation via Puppet
89 Setting to a previously unused value during stack-update will trigger
90 package update on all nodes
93 default: '' # Defaults to Heat created hostname
97 description: Optional mapping to override hostnames
100 description: Mapping of service_name -> network name. Typically set
101 via parameter_defaults in the resource registry.
105 description: Mapping of service endpoint -> protocol. Typically set
106 via parameter_defaults in the resource registry.
110 description: The timezone to be set on Cinder nodes.
118 NetworkDeploymentActions:
119 type: comma_delimited_list
121 Heat action when to apply network configuration changes
123 SoftwareConfigTransport:
124 default: POLL_SERVER_CFN
126 How the server should receive the metadata required for software configuration.
129 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
134 The DNS domain used for the hosts. This should match the dhcp_domain
135 configured in the Undercloud neutron. Defaults to localdomain.
139 Extra properties or metadata passed to Nova for the created nodes in
140 the overcloud. It's accessible via the Nova metadata API.
144 description: Optional scheduler hints to pass to nova
153 type: OS::Nova::Server
157 flavor: {get_param: Flavor}
158 key_name: {get_param: KeyName}
161 user_data_format: SOFTWARE_CONFIG
162 user_data: {get_resource: UserData}
165 template: {get_param: Hostname}
166 params: {get_param: HostnameMap}
167 software_config_transport: {get_param: SoftwareConfigTransport}
168 metadata: {get_param: ServerMetadata}
169 scheduler_hints: {get_param: SchedulerHints}
171 # Combine the NodeAdminUserData and NodeUserData mime archives
173 type: OS::Heat::MultipartMime
176 - config: {get_resource: NodeAdminUserData}
178 - config: {get_resource: NodeUserData}
181 # Creates the "heat-admin" user if configured via the environment
182 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
184 type: OS::TripleO::NodeAdminUserData
186 # For optional operator additional userdata
187 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
189 type: OS::TripleO::NodeUserData
192 type: OS::TripleO::BlockStorage::Ports::ExternalPort
194 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
195 IPPool: {get_param: BlockStorageIPs}
196 NodeIndex: {get_param: NodeIndex}
199 type: OS::TripleO::BlockStorage::Ports::InternalApiPort
201 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
202 IPPool: {get_param: BlockStorageIPs}
203 NodeIndex: {get_param: NodeIndex}
206 type: OS::TripleO::BlockStorage::Ports::StoragePort
208 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
209 IPPool: {get_param: BlockStorageIPs}
210 NodeIndex: {get_param: NodeIndex}
213 type: OS::TripleO::BlockStorage::Ports::StorageMgmtPort
215 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
216 IPPool: {get_param: BlockStorageIPs}
217 NodeIndex: {get_param: NodeIndex}
220 type: OS::TripleO::BlockStorage::Ports::TenantPort
222 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
223 IPPool: {get_param: BlockStorageIPs}
224 NodeIndex: {get_param: NodeIndex}
227 type: OS::TripleO::BlockStorage::Ports::ManagementPort
229 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
230 IPPool: {get_param: BlockStorageIPs}
231 NodeIndex: {get_param: NodeIndex}
234 type: OS::TripleO::BlockStorage::Net::SoftwareConfig
236 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
237 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
238 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
239 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
240 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
241 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
242 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
245 type: OS::TripleO::Network::Ports::NetIpMap
247 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
248 ExternalIp: {get_attr: [ExternalPort, ip_address]}
249 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
250 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
251 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
252 StorageIp: {get_attr: [StoragePort, ip_address]}
253 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
254 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
255 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
256 TenantIp: {get_attr: [TenantPort, ip_address]}
257 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
258 ManagementIp: {get_attr: [ManagementPort, ip_address]}
259 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
262 type: OS::TripleO::SoftwareDeployment
264 name: NetworkDeployment
265 config: {get_resource: NetworkConfig}
266 server: {get_resource: BlockStorage}
267 actions: {get_param: NetworkDeploymentActions}
269 BlockStorageDeployment:
270 type: OS::Heat::StructuredDeployment
271 depends_on: NetworkDeployment
273 name: BlockStorageDeployment
274 server: {get_resource: BlockStorage}
275 config: {get_resource: BlockStorageConfig}
277 debug: {get_param: Debug}
278 cinder_dsn: {list_join: ['', ['mysql+pymysql://cinder:', {get_param: CinderPassword}, '@', {get_param: MysqlVirtualIPUri} , '/cinder']]}
279 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
280 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
281 cinder_lvm_loop_device_size:
285 size: {get_param: CinderLVMLoopDeviceSize}
286 cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
287 cinder_iscsi_helper: {get_param: CinderISCSIHelper}
288 cinder_iscsi_ip_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
289 glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
290 rabbit_username: {get_param: RabbitUserName}
291 rabbit_password: {get_param: RabbitPassword}
292 rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
293 rabbit_client_port: {get_param: RabbitClientPort}
294 ntp_servers: {get_param: NtpServer}
295 timezone: {get_param: TimeZone}
296 enable_package_install: {get_param: EnablePackageInstall}
297 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
299 # Map heat metadata into hiera datafiles
301 type: OS::Heat::StructuredConfig
303 group: os-apply-config
308 - heat_config_%{::deploy_config_name}
312 - all_nodes # provided by allNodesConfig
317 raw_data: {get_file: hieradata/common.yaml}
319 mapped_data: {get_param: BlockStorageExtraConfig}
321 mapped_data: {get_param: ExtraConfig}
323 raw_data: {get_file: hieradata/volume.yaml}
326 cinder::debug: {get_input: debug}
327 cinder::setup_test_volume::size: {get_input: cinder_lvm_loop_device_size}
328 cinder_iscsi_helper: {get_input: cinder_iscsi_helper}
329 cinder::database_connection: {get_input: cinder_dsn}
330 cinder::rabbit_userid: {get_input: rabbit_username}
331 cinder::rabbit_password: {get_input: rabbit_password}
332 cinder::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
333 cinder::rabbit_port: {get_input: rabbit_client_port}
334 cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
335 cinder_iscsi_ip_address: {get_input: cinder_iscsi_ip_address}
336 cinder::glance::glance_api_servers: {get_input: glance_api_servers}
337 ntp::servers: {get_input: ntp_servers}
338 timezone::timezone: {get_input: timezone}
339 tripleo::packages::enable_install: {get_input: enable_package_install}
340 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
341 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
342 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
344 # Resource for site-specific injection of root certificate
346 depends_on: BlockStorageDeployment
347 type: OS::TripleO::NodeTLSCAData
349 server: {get_resource: BlockStorage}
351 # Hook for site-specific additional pre-deployment config,
352 # applying to all nodes, e.g node registration/unregistration
354 depends_on: NodeTLSCAData
355 type: OS::TripleO::NodeExtraConfig
357 server: {get_resource: BlockStorage}
360 type: OS::TripleO::Tasks::PackageUpdate
363 type: OS::Heat::SoftwareDeployment
365 name: UpdateDeployment
366 config: {get_resource: UpdateConfig}
367 server: {get_resource: BlockStorage}
370 get_param: UpdateIdentifier
377 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
378 EXTERNALIP EXTERNALHOST
379 INTERNAL_APIIP INTERNAL_APIHOST
380 STORAGEIP STORAGEHOST
381 STORAGE_MGMTIP STORAGE_MGMTHOST
383 MANAGEMENTIP MANAGEMENTHOST
385 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
386 DOMAIN: {get_param: CloudDomain}
387 PRIMARYHOST: {get_attr: [BlockStorage, name]}
388 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
392 - - {get_attr: [BlockStorage, name]}
394 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
398 - - {get_attr: [BlockStorage, name]}
400 STORAGEIP: {get_attr: [StoragePort, ip_address]}
404 - - {get_attr: [BlockStorage, name]}
406 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
410 - - {get_attr: [BlockStorage, name]}
412 TENANTIP: {get_attr: [TenantPort, ip_address]}
416 - - {get_attr: [BlockStorage, name]}
418 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
422 - - {get_attr: [BlockStorage, name]}
424 nova_server_resource:
425 description: Heat resource handle for the block storage server
427 {get_resource: BlockStorage}
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]}
447 description: identifier which changes if the node configuration may need re-applying
451 - - {get_attr: [BlockStorageDeployment, deploy_stdout]}
452 - {get_attr: [NodeTLSCAData, deploy_stdout]}
453 - {get_param: UpdateIdentifier}