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.
108 NetworkDeploymentActions:
109 type: comma_delimited_list
111 Heat action when to apply network configuration changes
113 SoftwareConfigTransport:
114 default: POLL_SERVER_CFN
116 How the server should receive the metadata required for software configuration.
119 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
124 The DNS domain used for the hosts. This should match the dhcp_domain
125 configured in the Undercloud neutron. Defaults to localdomain.
129 Extra properties or metadata passed to Nova for the created nodes in
130 the overcloud. It's accessible via the Nova metadata API.
134 description: Optional scheduler hints to pass to nova
140 type: OS::Nova::Server
144 flavor: {get_param: Flavor}
145 key_name: {get_param: KeyName}
148 user_data_format: SOFTWARE_CONFIG
149 user_data: {get_resource: UserData}
150 name: {get_param: Hostname}
151 software_config_transport: {get_param: SoftwareConfigTransport}
152 metadata: {get_param: ServerMetadata}
153 scheduler_hints: {get_param: SchedulerHints}
155 # Combine the NodeAdminUserData and NodeUserData mime archives
157 type: OS::Heat::MultipartMime
160 - config: {get_resource: NodeAdminUserData}
162 - config: {get_resource: NodeUserData}
165 # Creates the "heat-admin" user if configured via the environment
166 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
168 type: OS::TripleO::NodeAdminUserData
170 # For optional operator additional userdata
171 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
173 type: OS::TripleO::NodeUserData
176 type: OS::TripleO::BlockStorage::Ports::ExternalPort
178 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
181 type: OS::TripleO::BlockStorage::Ports::InternalApiPort
183 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
186 type: OS::TripleO::BlockStorage::Ports::StoragePort
188 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
191 type: OS::TripleO::BlockStorage::Ports::StorageMgmtPort
193 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
196 type: OS::TripleO::BlockStorage::Ports::TenantPort
198 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
201 type: OS::TripleO::BlockStorage::Ports::ManagementPort
203 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
206 type: OS::TripleO::BlockStorage::Net::SoftwareConfig
208 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
209 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
210 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
211 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
212 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
213 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
214 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
217 type: OS::TripleO::Network::Ports::NetIpMap
219 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
220 ExternalIp: {get_attr: [ExternalPort, ip_address]}
221 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
222 StorageIp: {get_attr: [StoragePort, ip_address]}
223 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
224 TenantIp: {get_attr: [TenantPort, ip_address]}
225 ManagementIp: {get_attr: [ManagementPort, ip_address]}
228 type: OS::TripleO::SoftwareDeployment
230 config: {get_resource: NetworkConfig}
231 server: {get_resource: BlockStorage}
232 actions: {get_param: NetworkDeploymentActions}
234 BlockStorageDeployment:
235 type: OS::Heat::StructuredDeployment
236 depends_on: NetworkDeployment
238 server: {get_resource: BlockStorage}
239 config: {get_resource: BlockStorageConfig}
241 debug: {get_param: Debug}
242 cinder_dsn: {list_join: ['', ['mysql://cinder:', {get_param: CinderPassword}, '@', {get_param: MysqlVirtualIP} , '/cinder']]}
243 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
244 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
245 cinder_lvm_loop_device_size:
249 size: {get_param: CinderLVMLoopDeviceSize}
250 cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
251 cinder_iscsi_helper: {get_param: CinderISCSIHelper}
252 cinder_iscsi_ip_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
253 glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
254 rabbit_username: {get_param: RabbitUserName}
255 rabbit_password: {get_param: RabbitPassword}
256 rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
257 rabbit_client_port: {get_param: RabbitClientPort}
258 ntp_servers: {get_param: NtpServer}
259 enable_package_install: {get_param: EnablePackageInstall}
260 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
262 # Map heat metadata into hiera datafiles
264 type: OS::Heat::StructuredConfig
266 group: os-apply-config
271 - heat_config_%{::deploy_config_name}
275 - all_nodes # provided by allNodesConfig
280 raw_data: {get_file: hieradata/common.yaml}
282 mapped_data: {get_param: BlockStorageExtraConfig}
284 mapped_data: {get_param: ExtraConfig}
286 raw_data: {get_file: hieradata/volume.yaml}
289 cinder::debug: {get_input: debug}
290 cinder::setup_test_volume::size: {get_input: cinder_lvm_loop_device_size}
291 cinder_iscsi_helper: {get_input: cinder_iscsi_helper}
292 cinder::database_connection: {get_input: cinder_dsn}
293 cinder::rabbit_userid: {get_input: rabbit_username}
294 cinder::rabbit_password: {get_input: rabbit_password}
295 cinder::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
296 cinder::rabbit_port: {get_input: rabbit_client_port}
297 cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
298 cinder_iscsi_ip_address: {get_input: cinder_iscsi_ip_address}
299 cinder::glance::glance_api_servers: {get_input: glance_api_servers}
300 ntp::servers: {get_input: ntp_servers}
301 tripleo::packages::enable_install: {get_input: enable_package_install}
302 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
303 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
304 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
306 # Resource for site-specific injection of root certificate
308 depends_on: BlockStorageDeployment
309 type: OS::TripleO::NodeTLSCAData
311 server: {get_resource: BlockStorage}
313 # Hook for site-specific additional pre-deployment config,
314 # applying to all nodes, e.g node registration/unregistration
316 depends_on: NodeTLSCAData
317 type: OS::TripleO::NodeExtraConfig
319 server: {get_resource: BlockStorage}
322 type: OS::TripleO::Tasks::PackageUpdate
325 type: OS::Heat::SoftwareDeployment
327 config: {get_resource: UpdateConfig}
328 server: {get_resource: BlockStorage}
331 get_param: UpdateIdentifier
337 template: "IP HOST.DOMAIN HOST"
339 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
340 DOMAIN: {get_param: CloudDomain}
341 HOST: {get_attr: [BlockStorage, name]}
342 nova_server_resource:
343 description: Heat resource handle for the block storage server
345 {get_resource: BlockStorage}
347 description: IP address of the server in the external network
348 value: {get_attr: [ExternalPort, ip_address]}
349 internal_api_ip_address:
350 description: IP address of the server in the internal_api network
351 value: {get_attr: [InternalApiPort, ip_address]}
353 description: IP address of the server in the storage network
354 value: {get_attr: [StoragePort, ip_address]}
355 storage_mgmt_ip_address:
356 description: IP address of the server in the storage_mgmt network
357 value: {get_attr: [StorageMgmtPort, ip_address]}
359 description: IP address of the server in the tenant network
360 value: {get_attr: [TenantPort, ip_address]}
361 management_ip_address:
362 description: IP address of the server in the management network
363 value: {get_attr: [ManagementPort, ip_address]}
365 description: identifier which changes if the node configuration may need re-applying
369 - - {get_attr: [BlockStorageDeployment, deploy_stdout]}
370 - {get_attr: [NodeTLSCAData, deploy_stdout]}
371 - {get_param: UpdateIdentifier}