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
94 description: Mapping of service_name -> network name. Typically set
95 via parameter_defaults in the resource registry.
99 description: Mapping of service endpoint -> protocol. Typically set
100 via parameter_defaults in the resource registry.
104 description: The timezone to be set on Cinder nodes.
112 NetworkDeploymentActions:
113 type: comma_delimited_list
115 Heat action when to apply network configuration changes
117 SoftwareConfigTransport:
118 default: POLL_SERVER_CFN
120 How the server should receive the metadata required for software configuration.
123 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
128 The DNS domain used for the hosts. This should match the dhcp_domain
129 configured in the Undercloud neutron. Defaults to localdomain.
133 Extra properties or metadata passed to Nova for the created nodes in
134 the overcloud. It's accessible via the Nova metadata API.
138 description: Optional scheduler hints to pass to nova
144 type: OS::Nova::Server
148 flavor: {get_param: Flavor}
149 key_name: {get_param: KeyName}
152 user_data_format: SOFTWARE_CONFIG
153 user_data: {get_resource: UserData}
154 name: {get_param: Hostname}
155 software_config_transport: {get_param: SoftwareConfigTransport}
156 metadata: {get_param: ServerMetadata}
157 scheduler_hints: {get_param: SchedulerHints}
159 # Combine the NodeAdminUserData and NodeUserData mime archives
161 type: OS::Heat::MultipartMime
164 - config: {get_resource: NodeAdminUserData}
166 - config: {get_resource: NodeUserData}
169 # Creates the "heat-admin" user if configured via the environment
170 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
172 type: OS::TripleO::NodeAdminUserData
174 # For optional operator additional userdata
175 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
177 type: OS::TripleO::NodeUserData
180 type: OS::TripleO::BlockStorage::Ports::ExternalPort
182 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
185 type: OS::TripleO::BlockStorage::Ports::InternalApiPort
187 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
190 type: OS::TripleO::BlockStorage::Ports::StoragePort
192 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
195 type: OS::TripleO::BlockStorage::Ports::StorageMgmtPort
197 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
200 type: OS::TripleO::BlockStorage::Ports::TenantPort
202 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
205 type: OS::TripleO::BlockStorage::Ports::ManagementPort
207 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
210 type: OS::TripleO::BlockStorage::Net::SoftwareConfig
212 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
213 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
214 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
215 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
216 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
217 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
218 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
221 type: OS::TripleO::Network::Ports::NetIpMap
223 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
224 ExternalIp: {get_attr: [ExternalPort, ip_address]}
225 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
226 StorageIp: {get_attr: [StoragePort, ip_address]}
227 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
228 TenantIp: {get_attr: [TenantPort, ip_address]}
229 ManagementIp: {get_attr: [ManagementPort, ip_address]}
232 type: OS::TripleO::SoftwareDeployment
234 name: NetworkDeployment
235 config: {get_resource: NetworkConfig}
236 server: {get_resource: BlockStorage}
237 actions: {get_param: NetworkDeploymentActions}
239 BlockStorageDeployment:
240 type: OS::Heat::StructuredDeployment
241 depends_on: NetworkDeployment
243 name: BlockStorageDeployment
244 server: {get_resource: BlockStorage}
245 config: {get_resource: BlockStorageConfig}
247 debug: {get_param: Debug}
248 cinder_dsn: {list_join: ['', ['mysql+pymysql://cinder:', {get_param: CinderPassword}, '@', {get_param: MysqlVirtualIP} , '/cinder']]}
249 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
250 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
251 cinder_lvm_loop_device_size:
255 size: {get_param: CinderLVMLoopDeviceSize}
256 cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
257 cinder_iscsi_helper: {get_param: CinderISCSIHelper}
258 cinder_iscsi_ip_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
259 glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
260 rabbit_username: {get_param: RabbitUserName}
261 rabbit_password: {get_param: RabbitPassword}
262 rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
263 rabbit_client_port: {get_param: RabbitClientPort}
264 ntp_servers: {get_param: NtpServer}
265 timezone: {get_param: TimeZone}
266 enable_package_install: {get_param: EnablePackageInstall}
267 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
269 # Map heat metadata into hiera datafiles
271 type: OS::Heat::StructuredConfig
273 group: os-apply-config
278 - heat_config_%{::deploy_config_name}
282 - all_nodes # provided by allNodesConfig
287 raw_data: {get_file: hieradata/common.yaml}
289 mapped_data: {get_param: BlockStorageExtraConfig}
291 mapped_data: {get_param: ExtraConfig}
293 raw_data: {get_file: hieradata/volume.yaml}
296 cinder::debug: {get_input: debug}
297 cinder::setup_test_volume::size: {get_input: cinder_lvm_loop_device_size}
298 cinder_iscsi_helper: {get_input: cinder_iscsi_helper}
299 cinder::database_connection: {get_input: cinder_dsn}
300 cinder::rabbit_userid: {get_input: rabbit_username}
301 cinder::rabbit_password: {get_input: rabbit_password}
302 cinder::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
303 cinder::rabbit_port: {get_input: rabbit_client_port}
304 cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
305 cinder_iscsi_ip_address: {get_input: cinder_iscsi_ip_address}
306 cinder::glance::glance_api_servers: {get_input: glance_api_servers}
307 ntp::servers: {get_input: ntp_servers}
308 timezone::timezone: {get_input: timezone}
309 tripleo::packages::enable_install: {get_input: enable_package_install}
310 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
311 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
312 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
314 # Resource for site-specific injection of root certificate
316 depends_on: BlockStorageDeployment
317 type: OS::TripleO::NodeTLSCAData
319 server: {get_resource: BlockStorage}
321 # Hook for site-specific additional pre-deployment config,
322 # applying to all nodes, e.g node registration/unregistration
324 depends_on: NodeTLSCAData
325 type: OS::TripleO::NodeExtraConfig
327 server: {get_resource: BlockStorage}
330 type: OS::TripleO::Tasks::PackageUpdate
333 type: OS::Heat::SoftwareDeployment
335 name: UpdateDeployment
336 config: {get_resource: UpdateConfig}
337 server: {get_resource: BlockStorage}
340 get_param: UpdateIdentifier
347 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
348 EXTERNALIP EXTERNALHOST
349 INTERNAL_APIIP INTERNAL_APIHOST
350 STORAGEIP STORAGEHOST
351 STORAGE_MGMTIP STORAGE_MGMTHOST
353 MANAGEMENTIP MANAGEMENTHOST
355 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
356 DOMAIN: {get_param: CloudDomain}
357 PRIMARYHOST: {get_attr: [BlockStorage, name]}
358 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
362 - - {get_attr: [BlockStorage, name]}
364 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
368 - - {get_attr: [BlockStorage, name]}
370 STORAGEIP: {get_attr: [StoragePort, ip_address]}
374 - - {get_attr: [BlockStorage, name]}
376 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
380 - - {get_attr: [BlockStorage, name]}
382 TENANTIP: {get_attr: [TenantPort, ip_address]}
386 - - {get_attr: [BlockStorage, name]}
388 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
392 - - {get_attr: [BlockStorage, name]}
394 nova_server_resource:
395 description: Heat resource handle for the block storage server
397 {get_resource: BlockStorage}
399 description: IP address of the server in the external network
400 value: {get_attr: [ExternalPort, ip_address]}
401 internal_api_ip_address:
402 description: IP address of the server in the internal_api network
403 value: {get_attr: [InternalApiPort, ip_address]}
405 description: IP address of the server in the storage network
406 value: {get_attr: [StoragePort, ip_address]}
407 storage_mgmt_ip_address:
408 description: IP address of the server in the storage_mgmt network
409 value: {get_attr: [StorageMgmtPort, ip_address]}
411 description: IP address of the server in the tenant network
412 value: {get_attr: [TenantPort, ip_address]}
413 management_ip_address:
414 description: IP address of the server in the management network
415 value: {get_attr: [ManagementPort, ip_address]}
417 description: identifier which changes if the node configuration may need re-applying
421 - - {get_attr: [BlockStorageDeployment, deploy_stdout]}
422 - {get_attr: [NodeTLSCAData, deploy_stdout]}
423 - {get_param: UpdateIdentifier}