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
268 merge_behavior: deeper
272 service_names: {get_param: ServiceNames}
274 mapped_data: {get_param: ServiceConfigSettings}
276 raw_data: {get_file: hieradata/common.yaml}
279 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
280 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
281 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
283 mapped_data: {get_param: BlockStorageExtraConfig}
285 mapped_data: {get_param: ExtraConfig}
287 raw_data: {get_file: hieradata/volume.yaml}
290 tripleo::profile::base::cinder::volume::iscsi::cinder_iscsi_ip_address: {get_input: cinder_iscsi_ip_address}
291 tripleo::packages::enable_install: {get_input: enable_package_install}
292 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
293 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
294 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
296 # Resource for site-specific injection of root certificate
298 depends_on: BlockStorageDeployment
299 type: OS::TripleO::NodeTLSCAData
301 server: {get_resource: BlockStorage}
303 # Hook for site-specific additional pre-deployment config,
304 # applying to all nodes, e.g node registration/unregistration
306 depends_on: NodeTLSCAData
307 type: OS::TripleO::NodeExtraConfig
309 server: {get_resource: BlockStorage}
312 type: OS::TripleO::Tasks::PackageUpdate
315 type: OS::Heat::SoftwareDeployment
317 name: UpdateDeployment
318 config: {get_resource: UpdateConfig}
319 server: {get_resource: BlockStorage}
322 get_param: UpdateIdentifier
326 description: IP address of the server in the ctlplane network
327 value: {get_attr: [BlockStorage, networks, ctlplane, 0]}
329 description: Hostname of the server
330 value: {get_attr: [BlockStorage, name]}
335 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
336 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
337 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
338 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
339 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
340 TENANTIP TENANTHOST.DOMAIN TENANTHOST
341 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
343 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
344 DOMAIN: {get_param: CloudDomain}
345 PRIMARYHOST: {get_attr: [BlockStorage, name]}
346 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
350 - - {get_attr: [BlockStorage, name]}
352 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
356 - - {get_attr: [BlockStorage, name]}
358 STORAGEIP: {get_attr: [StoragePort, ip_address]}
362 - - {get_attr: [BlockStorage, name]}
364 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
368 - - {get_attr: [BlockStorage, name]}
370 TENANTIP: {get_attr: [TenantPort, ip_address]}
374 - - {get_attr: [BlockStorage, name]}
376 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
380 - - {get_attr: [BlockStorage, name]}
382 nova_server_resource:
383 description: Heat resource handle for the block storage server
385 {get_resource: BlockStorage}
387 description: IP address of the server in the external network
388 value: {get_attr: [ExternalPort, ip_address]}
389 internal_api_ip_address:
390 description: IP address of the server in the internal_api network
391 value: {get_attr: [InternalApiPort, ip_address]}
393 description: IP address of the server in the storage network
394 value: {get_attr: [StoragePort, ip_address]}
395 storage_mgmt_ip_address:
396 description: IP address of the server in the storage_mgmt network
397 value: {get_attr: [StorageMgmtPort, ip_address]}
399 description: IP address of the server in the tenant network
400 value: {get_attr: [TenantPort, ip_address]}
401 management_ip_address:
402 description: IP address of the server in the management network
403 value: {get_attr: [ManagementPort, ip_address]}