1 heat_template_version: 2015-04-30
2 description: 'OpenStack cinder storage configured by Puppet'
5 default: overcloud-full
8 - custom_constraint: glance.image
12 Additional hiera configuration to inject into the cluster. Note
13 that BlockStorageExtraConfig takes precedence over ExtraConfig.
15 BlockStorageExtraConfig:
18 Role specific additional hiera configuration to inject into the cluster.
24 description: Flavor for block storage nodes to request when deploying.
27 - custom_constraint: nova.flavor
30 description: Name of an existing Nova key pair to enable SSH access to the instances
32 SnmpdReadonlyUserName:
34 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
36 SnmpdReadonlyUserPassword:
37 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
42 description: Set to true to enable package installation via Puppet
48 Setting to a previously unused value during stack-update will trigger
49 package update on all nodes
52 default: '' # Defaults to Heat created hostname
56 description: Optional mapping to override hostnames
59 description: Mapping of service_name -> network name. Typically set
60 via parameter_defaults in the resource registry.
62 NetworkDeploymentActions:
63 type: comma_delimited_list
65 Heat action when to apply network configuration changes
67 SoftwareConfigTransport:
68 default: POLL_SERVER_CFN
70 How the server should receive the metadata required for software configuration.
73 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
78 The DNS domain used for the hosts. This should match the dhcp_domain
79 configured in the Undercloud neutron. Defaults to localdomain.
83 Extra properties or metadata passed to Nova for the created nodes in
84 the overcloud. It's accessible via the Nova metadata API.
86 BlockStorageSchedulerHints:
88 description: Optional scheduler hints to pass to nova
93 ServiceConfigSettings:
97 type: comma_delimited_list
101 description: Command which will be run whenever configuration data changes
102 default: os-refresh-config --timeout 14400
106 type: OS::TripleO::Server
109 command: {get_param: ConfigCommand}
112 {get_param: BlockStorageImage}
113 flavor: {get_param: Flavor}
114 key_name: {get_param: KeyName}
117 user_data_format: SOFTWARE_CONFIG
118 user_data: {get_resource: UserData}
121 template: {get_param: Hostname}
122 params: {get_param: HostnameMap}
123 software_config_transport: {get_param: SoftwareConfigTransport}
124 metadata: {get_param: ServerMetadata}
125 scheduler_hints: {get_param: BlockStorageSchedulerHints}
127 # Combine the NodeAdminUserData and NodeUserData mime archives
129 type: OS::Heat::MultipartMime
132 - config: {get_resource: NodeAdminUserData}
134 - config: {get_resource: NodeUserData}
137 # Creates the "heat-admin" user if configured via the environment
138 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
140 type: OS::TripleO::NodeAdminUserData
142 # For optional operator additional userdata
143 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
145 type: OS::TripleO::NodeUserData
148 type: OS::TripleO::BlockStorage::Ports::ExternalPort
150 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
151 IPPool: {get_param: BlockStorageIPs}
152 NodeIndex: {get_param: NodeIndex}
155 type: OS::TripleO::BlockStorage::Ports::InternalApiPort
157 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
158 IPPool: {get_param: BlockStorageIPs}
159 NodeIndex: {get_param: NodeIndex}
162 type: OS::TripleO::BlockStorage::Ports::StoragePort
164 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
165 IPPool: {get_param: BlockStorageIPs}
166 NodeIndex: {get_param: NodeIndex}
169 type: OS::TripleO::BlockStorage::Ports::StorageMgmtPort
171 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
172 IPPool: {get_param: BlockStorageIPs}
173 NodeIndex: {get_param: NodeIndex}
176 type: OS::TripleO::BlockStorage::Ports::TenantPort
178 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
179 IPPool: {get_param: BlockStorageIPs}
180 NodeIndex: {get_param: NodeIndex}
183 type: OS::TripleO::BlockStorage::Ports::ManagementPort
185 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
186 IPPool: {get_param: BlockStorageIPs}
187 NodeIndex: {get_param: NodeIndex}
190 type: OS::TripleO::BlockStorage::Net::SoftwareConfig
192 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
193 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
194 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
195 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
196 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
197 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
198 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
201 type: OS::TripleO::Network::Ports::NetIpMap
203 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
204 ExternalIp: {get_attr: [ExternalPort, ip_address]}
205 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
206 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
207 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
208 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
209 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
210 StorageIp: {get_attr: [StoragePort, ip_address]}
211 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
212 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
213 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
214 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
215 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
216 TenantIp: {get_attr: [TenantPort, ip_address]}
217 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
218 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
219 ManagementIp: {get_attr: [ManagementPort, ip_address]}
220 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
221 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
224 type: OS::TripleO::SoftwareDeployment
226 name: NetworkDeployment
227 config: {get_resource: NetworkConfig}
228 server: {get_resource: BlockStorage}
229 actions: {get_param: NetworkDeploymentActions}
231 BlockStorageDeployment:
232 type: OS::Heat::StructuredDeployment
233 depends_on: NetworkDeployment
235 name: BlockStorageDeployment
236 server: {get_resource: BlockStorage}
237 config: {get_resource: BlockStorageConfig}
239 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
240 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
241 cinder_iscsi_ip_address:
245 IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
246 enable_package_install: {get_param: EnablePackageInstall}
247 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
249 # Map heat metadata into hiera datafiles
251 type: OS::Heat::StructuredConfig
253 group: os-apply-config
258 - heat_config_%{::deploy_config_name}
264 - all_nodes # provided by allNodesConfig
267 merge_behavior: deeper
271 service_names: {get_param: ServiceNames}
273 mapped_data: {get_param: ServiceConfigSettings}
276 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
277 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
278 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
280 mapped_data: {get_param: BlockStorageExtraConfig}
282 mapped_data: {get_param: ExtraConfig}
284 raw_data: {get_file: hieradata/volume.yaml}
287 tripleo::profile::base::cinder::volume::iscsi::cinder_iscsi_ip_address: {get_input: cinder_iscsi_ip_address}
288 tripleo::packages::enable_install: {get_input: enable_package_install}
289 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
290 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
291 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
293 # Resource for site-specific injection of root certificate
295 depends_on: BlockStorageDeployment
296 type: OS::TripleO::NodeTLSCAData
298 server: {get_resource: BlockStorage}
300 # Hook for site-specific additional pre-deployment config,
301 # applying to all nodes, e.g node registration/unregistration
303 depends_on: NodeTLSCAData
304 type: OS::TripleO::NodeExtraConfig
306 server: {get_resource: BlockStorage}
309 type: OS::TripleO::Tasks::PackageUpdate
312 type: OS::Heat::SoftwareDeployment
314 name: UpdateDeployment
315 config: {get_resource: UpdateConfig}
316 server: {get_resource: BlockStorage}
319 get_param: UpdateIdentifier
323 description: IP address of the server in the ctlplane network
324 value: {get_attr: [BlockStorage, networks, ctlplane, 0]}
326 description: Hostname of the server
327 value: {get_attr: [BlockStorage, name]}
332 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
333 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
334 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
335 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
336 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
337 TENANTIP TENANTHOST.DOMAIN TENANTHOST
338 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
340 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
341 DOMAIN: {get_param: CloudDomain}
342 PRIMARYHOST: {get_attr: [BlockStorage, name]}
343 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
347 - - {get_attr: [BlockStorage, name]}
349 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
353 - - {get_attr: [BlockStorage, name]}
355 STORAGEIP: {get_attr: [StoragePort, ip_address]}
359 - - {get_attr: [BlockStorage, name]}
361 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
365 - - {get_attr: [BlockStorage, name]}
367 TENANTIP: {get_attr: [TenantPort, ip_address]}
371 - - {get_attr: [BlockStorage, name]}
373 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
377 - - {get_attr: [BlockStorage, name]}
379 nova_server_resource:
380 description: Heat resource handle for the block storage server
382 {get_resource: BlockStorage}
384 description: IP address of the server in the external network
385 value: {get_attr: [ExternalPort, ip_address]}
386 internal_api_ip_address:
387 description: IP address of the server in the internal_api network
388 value: {get_attr: [InternalApiPort, ip_address]}
390 description: IP address of the server in the storage network
391 value: {get_attr: [StoragePort, ip_address]}
392 storage_mgmt_ip_address:
393 description: IP address of the server in the storage_mgmt network
394 value: {get_attr: [StorageMgmtPort, ip_address]}
396 description: IP address of the server in the tenant network
397 value: {get_attr: [TenantPort, ip_address]}
398 management_ip_address:
399 description: IP address of the server in the management network
400 value: {get_attr: [ManagementPort, ip_address]}