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.
42 description: Flavor for block storage nodes to request when deploying.
45 - custom_constraint: nova.flavor
48 description: Name of an existing Nova key pair to enable SSH access to the instances
60 Rabbit client subscriber parameter to specify
61 an SSL connection to the RabbitMQ host.
65 description: Set rabbit subscriber port, change this if using SSL
67 SnmpdReadonlyUserName:
69 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
71 SnmpdReadonlyUserPassword:
72 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
77 description: Comma-separated list of ntp servers
78 type: comma_delimited_list
81 description: Set to true to enable package installation via Puppet
87 Setting to a previously unused value during stack-update will trigger
88 package update on all nodes
91 default: '' # Defaults to Heat created hostname
95 description: Optional mapping to override hostnames
98 description: Mapping of service_name -> network name. Typically set
99 via parameter_defaults in the resource registry.
103 description: Mapping of service endpoint -> protocol. Typically set
104 via parameter_defaults in the resource registry.
108 description: The timezone to be set on Cinder nodes.
116 NetworkDeploymentActions:
117 type: comma_delimited_list
119 Heat action when to apply network configuration changes
121 SoftwareConfigTransport:
122 default: POLL_SERVER_CFN
124 How the server should receive the metadata required for software configuration.
127 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
132 The DNS domain used for the hosts. This should match the dhcp_domain
133 configured in the Undercloud neutron. Defaults to localdomain.
137 Extra properties or metadata passed to Nova for the created nodes in
138 the overcloud. It's accessible via the Nova metadata API.
142 description: Optional scheduler hints to pass to nova
148 type: OS::Nova::Server
152 flavor: {get_param: Flavor}
153 key_name: {get_param: KeyName}
156 user_data_format: SOFTWARE_CONFIG
157 user_data: {get_resource: UserData}
160 template: {get_param: Hostname}
161 params: {get_param: HostnameMap}
162 software_config_transport: {get_param: SoftwareConfigTransport}
163 metadata: {get_param: ServerMetadata}
164 scheduler_hints: {get_param: SchedulerHints}
166 # Combine the NodeAdminUserData and NodeUserData mime archives
168 type: OS::Heat::MultipartMime
171 - config: {get_resource: NodeAdminUserData}
173 - config: {get_resource: NodeUserData}
176 # Creates the "heat-admin" user if configured via the environment
177 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
179 type: OS::TripleO::NodeAdminUserData
181 # For optional operator additional userdata
182 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
184 type: OS::TripleO::NodeUserData
187 type: OS::TripleO::BlockStorage::Ports::ExternalPort
189 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
192 type: OS::TripleO::BlockStorage::Ports::InternalApiPort
194 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
197 type: OS::TripleO::BlockStorage::Ports::StoragePort
199 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
202 type: OS::TripleO::BlockStorage::Ports::StorageMgmtPort
204 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
207 type: OS::TripleO::BlockStorage::Ports::TenantPort
209 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
212 type: OS::TripleO::BlockStorage::Ports::ManagementPort
214 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
217 type: OS::TripleO::BlockStorage::Net::SoftwareConfig
219 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
220 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
221 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
222 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
223 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
224 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
225 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
228 type: OS::TripleO::Network::Ports::NetIpMap
230 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
231 ExternalIp: {get_attr: [ExternalPort, ip_address]}
232 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
233 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
234 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
235 StorageIp: {get_attr: [StoragePort, ip_address]}
236 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
237 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
238 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
239 TenantIp: {get_attr: [TenantPort, ip_address]}
240 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
241 ManagementIp: {get_attr: [ManagementPort, ip_address]}
242 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
245 type: OS::TripleO::SoftwareDeployment
247 name: NetworkDeployment
248 config: {get_resource: NetworkConfig}
249 server: {get_resource: BlockStorage}
250 actions: {get_param: NetworkDeploymentActions}
252 BlockStorageDeployment:
253 type: OS::Heat::StructuredDeployment
254 depends_on: NetworkDeployment
256 name: BlockStorageDeployment
257 server: {get_resource: BlockStorage}
258 config: {get_resource: BlockStorageConfig}
260 debug: {get_param: Debug}
261 cinder_dsn: {list_join: ['', ['mysql+pymysql://cinder:', {get_param: CinderPassword}, '@', {get_param: MysqlVirtualIPUri} , '/cinder']]}
262 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
263 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
264 cinder_lvm_loop_device_size:
268 size: {get_param: CinderLVMLoopDeviceSize}
269 cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
270 cinder_iscsi_helper: {get_param: CinderISCSIHelper}
271 cinder_iscsi_ip_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
272 glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
273 rabbit_username: {get_param: RabbitUserName}
274 rabbit_password: {get_param: RabbitPassword}
275 rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
276 rabbit_client_port: {get_param: RabbitClientPort}
277 ntp_servers: {get_param: NtpServer}
278 timezone: {get_param: TimeZone}
279 enable_package_install: {get_param: EnablePackageInstall}
280 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
282 # Map heat metadata into hiera datafiles
284 type: OS::Heat::StructuredConfig
286 group: os-apply-config
291 - heat_config_%{::deploy_config_name}
295 - all_nodes # provided by allNodesConfig
300 raw_data: {get_file: hieradata/common.yaml}
302 mapped_data: {get_param: BlockStorageExtraConfig}
304 mapped_data: {get_param: ExtraConfig}
306 raw_data: {get_file: hieradata/volume.yaml}
309 cinder::debug: {get_input: debug}
310 cinder::setup_test_volume::size: {get_input: cinder_lvm_loop_device_size}
311 cinder_iscsi_helper: {get_input: cinder_iscsi_helper}
312 cinder::database_connection: {get_input: cinder_dsn}
313 cinder::rabbit_userid: {get_input: rabbit_username}
314 cinder::rabbit_password: {get_input: rabbit_password}
315 cinder::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
316 cinder::rabbit_port: {get_input: rabbit_client_port}
317 cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
318 cinder_iscsi_ip_address: {get_input: cinder_iscsi_ip_address}
319 cinder::glance::glance_api_servers: {get_input: glance_api_servers}
320 ntp::servers: {get_input: ntp_servers}
321 timezone::timezone: {get_input: timezone}
322 tripleo::packages::enable_install: {get_input: enable_package_install}
323 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
324 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
325 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
327 # Resource for site-specific injection of root certificate
329 depends_on: BlockStorageDeployment
330 type: OS::TripleO::NodeTLSCAData
332 server: {get_resource: BlockStorage}
334 # Hook for site-specific additional pre-deployment config,
335 # applying to all nodes, e.g node registration/unregistration
337 depends_on: NodeTLSCAData
338 type: OS::TripleO::NodeExtraConfig
340 server: {get_resource: BlockStorage}
343 type: OS::TripleO::Tasks::PackageUpdate
346 type: OS::Heat::SoftwareDeployment
348 name: UpdateDeployment
349 config: {get_resource: UpdateConfig}
350 server: {get_resource: BlockStorage}
353 get_param: UpdateIdentifier
360 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
361 EXTERNALIP EXTERNALHOST
362 INTERNAL_APIIP INTERNAL_APIHOST
363 STORAGEIP STORAGEHOST
364 STORAGE_MGMTIP STORAGE_MGMTHOST
366 MANAGEMENTIP MANAGEMENTHOST
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 nova_server_resource:
408 description: Heat resource handle for the block storage server
410 {get_resource: BlockStorage}
412 description: IP address of the server in the external network
413 value: {get_attr: [ExternalPort, ip_address]}
414 internal_api_ip_address:
415 description: IP address of the server in the internal_api network
416 value: {get_attr: [InternalApiPort, ip_address]}
418 description: IP address of the server in the storage network
419 value: {get_attr: [StoragePort, ip_address]}
420 storage_mgmt_ip_address:
421 description: IP address of the server in the storage_mgmt network
422 value: {get_attr: [StorageMgmtPort, ip_address]}
424 description: IP address of the server in the tenant network
425 value: {get_attr: [TenantPort, ip_address]}
426 management_ip_address:
427 description: IP address of the server in the management network
428 value: {get_attr: [ManagementPort, ip_address]}
430 description: identifier which changes if the node configuration may need re-applying
434 - - {get_attr: [BlockStorageDeployment, deploy_stdout]}
435 - {get_attr: [NodeTLSCAData, deploy_stdout]}
436 - {get_param: UpdateIdentifier}