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:
292 IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
293 glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
294 rabbit_username: {get_param: RabbitUserName}
295 rabbit_password: {get_param: RabbitPassword}
296 rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
297 rabbit_client_port: {get_param: RabbitClientPort}
298 ntp_servers: {get_param: NtpServer}
299 timezone: {get_param: TimeZone}
300 enable_package_install: {get_param: EnablePackageInstall}
301 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
303 # Map heat metadata into hiera datafiles
305 type: OS::Heat::StructuredConfig
307 group: os-apply-config
312 - heat_config_%{::deploy_config_name}
316 - all_nodes # provided by allNodesConfig
321 raw_data: {get_file: hieradata/common.yaml}
323 mapped_data: {get_param: BlockStorageExtraConfig}
325 mapped_data: {get_param: ExtraConfig}
327 raw_data: {get_file: hieradata/volume.yaml}
330 cinder::debug: {get_input: debug}
331 cinder::setup_test_volume::size: {get_input: cinder_lvm_loop_device_size}
332 cinder_iscsi_helper: {get_input: cinder_iscsi_helper}
333 cinder::database_connection: {get_input: cinder_dsn}
334 cinder::rabbit_userid: {get_input: rabbit_username}
335 cinder::rabbit_password: {get_input: rabbit_password}
336 cinder::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
337 cinder::rabbit_port: {get_input: rabbit_client_port}
338 cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
339 cinder_iscsi_ip_address: {get_input: cinder_iscsi_ip_address}
340 cinder::glance::glance_api_servers: {get_input: glance_api_servers}
341 ntp::servers: {get_input: ntp_servers}
342 timezone::timezone: {get_input: timezone}
343 tripleo::packages::enable_install: {get_input: enable_package_install}
344 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
345 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
346 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
348 # Resource for site-specific injection of root certificate
350 depends_on: BlockStorageDeployment
351 type: OS::TripleO::NodeTLSCAData
353 server: {get_resource: BlockStorage}
355 # Hook for site-specific additional pre-deployment config,
356 # applying to all nodes, e.g node registration/unregistration
358 depends_on: NodeTLSCAData
359 type: OS::TripleO::NodeExtraConfig
361 server: {get_resource: BlockStorage}
364 type: OS::TripleO::Tasks::PackageUpdate
367 type: OS::Heat::SoftwareDeployment
369 name: UpdateDeployment
370 config: {get_resource: UpdateConfig}
371 server: {get_resource: BlockStorage}
374 get_param: UpdateIdentifier
381 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
382 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
383 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
384 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
385 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
386 TENANTIP TENANTHOST.DOMAIN TENANTHOST
387 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
389 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
390 DOMAIN: {get_param: CloudDomain}
391 PRIMARYHOST: {get_attr: [BlockStorage, name]}
392 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
396 - - {get_attr: [BlockStorage, name]}
398 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
402 - - {get_attr: [BlockStorage, name]}
404 STORAGEIP: {get_attr: [StoragePort, ip_address]}
408 - - {get_attr: [BlockStorage, name]}
410 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
414 - - {get_attr: [BlockStorage, name]}
416 TENANTIP: {get_attr: [TenantPort, ip_address]}
420 - - {get_attr: [BlockStorage, name]}
422 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
426 - - {get_attr: [BlockStorage, name]}
428 nova_server_resource:
429 description: Heat resource handle for the block storage server
431 {get_resource: BlockStorage}
433 description: IP address of the server in the external network
434 value: {get_attr: [ExternalPort, ip_address]}
435 internal_api_ip_address:
436 description: IP address of the server in the internal_api network
437 value: {get_attr: [InternalApiPort, ip_address]}
439 description: IP address of the server in the storage network
440 value: {get_attr: [StoragePort, ip_address]}
441 storage_mgmt_ip_address:
442 description: IP address of the server in the storage_mgmt network
443 value: {get_attr: [StorageMgmtPort, ip_address]}
445 description: IP address of the server in the tenant network
446 value: {get_attr: [TenantPort, ip_address]}
447 management_ip_address:
448 description: IP address of the server in the management network
449 value: {get_attr: [ManagementPort, ip_address]}
451 description: identifier which changes if the node configuration may need re-applying
455 - - {get_attr: [BlockStorageDeployment, deploy_stdout]}
456 - {get_attr: [NodeTLSCAData, deploy_stdout]}
457 - {get_param: UpdateIdentifier}