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 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
233 StorageIp: {get_attr: [StoragePort, ip_address]}
234 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
235 TenantIp: {get_attr: [TenantPort, ip_address]}
236 ManagementIp: {get_attr: [ManagementPort, ip_address]}
239 type: OS::TripleO::SoftwareDeployment
241 name: NetworkDeployment
242 config: {get_resource: NetworkConfig}
243 server: {get_resource: BlockStorage}
244 actions: {get_param: NetworkDeploymentActions}
246 BlockStorageDeployment:
247 type: OS::Heat::StructuredDeployment
248 depends_on: NetworkDeployment
250 name: BlockStorageDeployment
251 server: {get_resource: BlockStorage}
252 config: {get_resource: BlockStorageConfig}
254 debug: {get_param: Debug}
255 cinder_dsn: {list_join: ['', ['mysql+pymysql://cinder:', {get_param: CinderPassword}, '@', {get_param: MysqlVirtualIP} , '/cinder']]}
256 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
257 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
258 cinder_lvm_loop_device_size:
262 size: {get_param: CinderLVMLoopDeviceSize}
263 cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
264 cinder_iscsi_helper: {get_param: CinderISCSIHelper}
265 cinder_iscsi_ip_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
266 glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
267 rabbit_username: {get_param: RabbitUserName}
268 rabbit_password: {get_param: RabbitPassword}
269 rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
270 rabbit_client_port: {get_param: RabbitClientPort}
271 ntp_servers: {get_param: NtpServer}
272 timezone: {get_param: TimeZone}
273 enable_package_install: {get_param: EnablePackageInstall}
274 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
276 # Map heat metadata into hiera datafiles
278 type: OS::Heat::StructuredConfig
280 group: os-apply-config
285 - heat_config_%{::deploy_config_name}
289 - all_nodes # provided by allNodesConfig
294 raw_data: {get_file: hieradata/common.yaml}
296 mapped_data: {get_param: BlockStorageExtraConfig}
298 mapped_data: {get_param: ExtraConfig}
300 raw_data: {get_file: hieradata/volume.yaml}
303 cinder::debug: {get_input: debug}
304 cinder::setup_test_volume::size: {get_input: cinder_lvm_loop_device_size}
305 cinder_iscsi_helper: {get_input: cinder_iscsi_helper}
306 cinder::database_connection: {get_input: cinder_dsn}
307 cinder::rabbit_userid: {get_input: rabbit_username}
308 cinder::rabbit_password: {get_input: rabbit_password}
309 cinder::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
310 cinder::rabbit_port: {get_input: rabbit_client_port}
311 cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
312 cinder_iscsi_ip_address: {get_input: cinder_iscsi_ip_address}
313 cinder::glance::glance_api_servers: {get_input: glance_api_servers}
314 ntp::servers: {get_input: ntp_servers}
315 timezone::timezone: {get_input: timezone}
316 tripleo::packages::enable_install: {get_input: enable_package_install}
317 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
318 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
319 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
321 # Resource for site-specific injection of root certificate
323 depends_on: BlockStorageDeployment
324 type: OS::TripleO::NodeTLSCAData
326 server: {get_resource: BlockStorage}
328 # Hook for site-specific additional pre-deployment config,
329 # applying to all nodes, e.g node registration/unregistration
331 depends_on: NodeTLSCAData
332 type: OS::TripleO::NodeExtraConfig
334 server: {get_resource: BlockStorage}
337 type: OS::TripleO::Tasks::PackageUpdate
340 type: OS::Heat::SoftwareDeployment
342 name: UpdateDeployment
343 config: {get_resource: UpdateConfig}
344 server: {get_resource: BlockStorage}
347 get_param: UpdateIdentifier
354 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
355 EXTERNALIP EXTERNALHOST
356 INTERNAL_APIIP INTERNAL_APIHOST
357 STORAGEIP STORAGEHOST
358 STORAGE_MGMTIP STORAGE_MGMTHOST
360 MANAGEMENTIP MANAGEMENTHOST
362 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
363 DOMAIN: {get_param: CloudDomain}
364 PRIMARYHOST: {get_attr: [BlockStorage, name]}
365 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
369 - - {get_attr: [BlockStorage, name]}
371 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
375 - - {get_attr: [BlockStorage, name]}
377 STORAGEIP: {get_attr: [StoragePort, ip_address]}
381 - - {get_attr: [BlockStorage, name]}
383 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
387 - - {get_attr: [BlockStorage, name]}
389 TENANTIP: {get_attr: [TenantPort, ip_address]}
393 - - {get_attr: [BlockStorage, name]}
395 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
399 - - {get_attr: [BlockStorage, name]}
401 nova_server_resource:
402 description: Heat resource handle for the block storage server
404 {get_resource: BlockStorage}
406 description: IP address of the server in the external network
407 value: {get_attr: [ExternalPort, ip_address]}
408 internal_api_ip_address:
409 description: IP address of the server in the internal_api network
410 value: {get_attr: [InternalApiPort, ip_address]}
412 description: IP address of the server in the storage network
413 value: {get_attr: [StoragePort, ip_address]}
414 storage_mgmt_ip_address:
415 description: IP address of the server in the storage_mgmt network
416 value: {get_attr: [StorageMgmtPort, ip_address]}
418 description: IP address of the server in the tenant network
419 value: {get_attr: [TenantPort, ip_address]}
420 management_ip_address:
421 description: IP address of the server in the management network
422 value: {get_attr: [ManagementPort, ip_address]}
424 description: identifier which changes if the node configuration may need re-applying
428 - - {get_attr: [BlockStorageDeployment, deploy_stdout]}
429 - {get_attr: [NodeTLSCAData, deploy_stdout]}
430 - {get_param: UpdateIdentifier}