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 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
250 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
251 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
252 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
253 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
254 StorageIp: {get_attr: [StoragePort, ip_address]}
255 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
256 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
257 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
258 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
259 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
260 TenantIp: {get_attr: [TenantPort, ip_address]}
261 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
262 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
263 ManagementIp: {get_attr: [ManagementPort, ip_address]}
264 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
265 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
268 type: OS::TripleO::SoftwareDeployment
270 name: NetworkDeployment
271 config: {get_resource: NetworkConfig}
272 server: {get_resource: BlockStorage}
273 actions: {get_param: NetworkDeploymentActions}
275 BlockStorageDeployment:
276 type: OS::Heat::StructuredDeployment
277 depends_on: NetworkDeployment
279 name: BlockStorageDeployment
280 server: {get_resource: BlockStorage}
281 config: {get_resource: BlockStorageConfig}
283 debug: {get_param: Debug}
284 cinder_dsn: {list_join: ['', ['mysql+pymysql://cinder:', {get_param: CinderPassword}, '@', {get_param: MysqlVirtualIPUri} , '/cinder']]}
285 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
286 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
287 cinder_lvm_loop_device_size:
291 size: {get_param: CinderLVMLoopDeviceSize}
292 cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
293 cinder_iscsi_helper: {get_param: CinderISCSIHelper}
294 cinder_iscsi_ip_address:
298 IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
299 glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
300 rabbit_username: {get_param: RabbitUserName}
301 rabbit_password: {get_param: RabbitPassword}
302 rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
303 rabbit_client_port: {get_param: RabbitClientPort}
304 ntp_servers: {get_param: NtpServer}
305 timezone: {get_param: TimeZone}
306 enable_package_install: {get_param: EnablePackageInstall}
307 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
309 # Map heat metadata into hiera datafiles
311 type: OS::Heat::StructuredConfig
313 group: os-apply-config
318 - heat_config_%{::deploy_config_name}
322 - all_nodes # provided by allNodesConfig
326 merge_behavior: deeper
329 raw_data: {get_file: hieradata/common.yaml}
332 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
333 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
334 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
336 mapped_data: {get_param: BlockStorageExtraConfig}
338 mapped_data: {get_param: ExtraConfig}
340 raw_data: {get_file: hieradata/volume.yaml}
343 cinder::debug: {get_input: debug}
344 cinder::setup_test_volume::size: {get_input: cinder_lvm_loop_device_size}
345 cinder_iscsi_helper: {get_input: cinder_iscsi_helper}
346 cinder::database_connection: {get_input: cinder_dsn}
347 cinder::rabbit_userid: {get_input: rabbit_username}
348 cinder::rabbit_password: {get_input: rabbit_password}
349 cinder::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
350 cinder::rabbit_port: {get_input: rabbit_client_port}
351 cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
352 cinder_iscsi_ip_address: {get_input: cinder_iscsi_ip_address}
353 cinder::glance::glance_api_servers: {get_input: glance_api_servers}
354 ntp::servers: {get_input: ntp_servers}
355 timezone::timezone: {get_input: timezone}
356 tripleo::packages::enable_install: {get_input: enable_package_install}
357 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
358 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
359 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
361 # Resource for site-specific injection of root certificate
363 depends_on: BlockStorageDeployment
364 type: OS::TripleO::NodeTLSCAData
366 server: {get_resource: BlockStorage}
368 # Hook for site-specific additional pre-deployment config,
369 # applying to all nodes, e.g node registration/unregistration
371 depends_on: NodeTLSCAData
372 type: OS::TripleO::NodeExtraConfig
374 server: {get_resource: BlockStorage}
377 type: OS::TripleO::Tasks::PackageUpdate
380 type: OS::Heat::SoftwareDeployment
382 name: UpdateDeployment
383 config: {get_resource: UpdateConfig}
384 server: {get_resource: BlockStorage}
387 get_param: UpdateIdentifier
394 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
395 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
396 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
397 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
398 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
399 TENANTIP TENANTHOST.DOMAIN TENANTHOST
400 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
402 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
403 DOMAIN: {get_param: CloudDomain}
404 PRIMARYHOST: {get_attr: [BlockStorage, name]}
405 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
409 - - {get_attr: [BlockStorage, name]}
411 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
415 - - {get_attr: [BlockStorage, name]}
417 STORAGEIP: {get_attr: [StoragePort, ip_address]}
421 - - {get_attr: [BlockStorage, name]}
423 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
427 - - {get_attr: [BlockStorage, name]}
429 TENANTIP: {get_attr: [TenantPort, ip_address]}
433 - - {get_attr: [BlockStorage, name]}
435 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
439 - - {get_attr: [BlockStorage, name]}
441 nova_server_resource:
442 description: Heat resource handle for the block storage server
444 {get_resource: BlockStorage}
446 description: IP address of the server in the external network
447 value: {get_attr: [ExternalPort, ip_address]}
448 internal_api_ip_address:
449 description: IP address of the server in the internal_api network
450 value: {get_attr: [InternalApiPort, ip_address]}
452 description: IP address of the server in the storage network
453 value: {get_attr: [StoragePort, ip_address]}
454 storage_mgmt_ip_address:
455 description: IP address of the server in the storage_mgmt network
456 value: {get_attr: [StorageMgmtPort, ip_address]}
458 description: IP address of the server in the tenant network
459 value: {get_attr: [TenantPort, ip_address]}
460 management_ip_address:
461 description: IP address of the server in the management network
462 value: {get_attr: [ManagementPort, ip_address]}
464 description: identifier which changes if the node configuration may need re-applying
468 - - {get_attr: [BlockStorageDeployment, deploy_stdout]}
469 - {get_attr: [NodeTLSCAData, deploy_stdout]}
470 - {get_param: UpdateIdentifier}