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.
23 OvercloudBlockStorageFlavor:
24 description: Flavor for block storage nodes to request when deploying.
28 - custom_constraint: nova.flavor
31 description: Name of an existing Nova key pair to enable SSH access to the instances
33 SnmpdReadonlyUserName:
35 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
37 SnmpdReadonlyUserPassword:
38 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
43 description: Set to true to enable package installation via Puppet
49 Setting to a previously unused value during stack-update will trigger
50 package update on all nodes
53 default: '' # Defaults to Heat created hostname
57 description: Optional mapping to override hostnames
60 description: Mapping of service_name -> network name. Typically set
61 via parameter_defaults in the resource registry.
63 NetworkDeploymentActions:
64 type: comma_delimited_list
66 Heat action when to apply network configuration changes
68 SoftwareConfigTransport:
69 default: POLL_SERVER_CFN
71 How the server should receive the metadata required for software configuration.
74 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
79 The DNS domain used for the hosts. This should match the dhcp_domain
80 configured in the Undercloud neutron. Defaults to localdomain.
84 Extra properties or metadata passed to Nova for the created nodes in
85 the overcloud. It's accessible via the Nova metadata API.
87 BlockStorageSchedulerHints:
89 description: Optional scheduler hints to pass to nova
94 ServiceConfigSettings:
98 type: comma_delimited_list
102 description: Command which will be run whenever configuration data changes
103 default: os-refresh-config --timeout 14400
107 type: OS::TripleO::Server
110 command: {get_param: ConfigCommand}
113 {get_param: BlockStorageImage}
114 flavor: {get_param: Flavor}
115 key_name: {get_param: KeyName}
118 user_data_format: SOFTWARE_CONFIG
119 user_data: {get_resource: UserData}
122 template: {get_param: Hostname}
123 params: {get_param: HostnameMap}
124 software_config_transport: {get_param: SoftwareConfigTransport}
125 metadata: {get_param: ServerMetadata}
126 scheduler_hints: {get_param: BlockStorageSchedulerHints}
128 # Combine the NodeAdminUserData and NodeUserData mime archives
130 type: OS::Heat::MultipartMime
133 - config: {get_resource: NodeAdminUserData}
135 - config: {get_resource: NodeUserData}
138 # Creates the "heat-admin" user if configured via the environment
139 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
141 type: OS::TripleO::NodeAdminUserData
143 # For optional operator additional userdata
144 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
146 type: OS::TripleO::NodeUserData
149 type: OS::TripleO::BlockStorage::Ports::ExternalPort
151 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
152 IPPool: {get_param: BlockStorageIPs}
153 NodeIndex: {get_param: NodeIndex}
156 type: OS::TripleO::BlockStorage::Ports::InternalApiPort
158 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
159 IPPool: {get_param: BlockStorageIPs}
160 NodeIndex: {get_param: NodeIndex}
163 type: OS::TripleO::BlockStorage::Ports::StoragePort
165 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
166 IPPool: {get_param: BlockStorageIPs}
167 NodeIndex: {get_param: NodeIndex}
170 type: OS::TripleO::BlockStorage::Ports::StorageMgmtPort
172 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
173 IPPool: {get_param: BlockStorageIPs}
174 NodeIndex: {get_param: NodeIndex}
177 type: OS::TripleO::BlockStorage::Ports::TenantPort
179 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
180 IPPool: {get_param: BlockStorageIPs}
181 NodeIndex: {get_param: NodeIndex}
184 type: OS::TripleO::BlockStorage::Ports::ManagementPort
186 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
187 IPPool: {get_param: BlockStorageIPs}
188 NodeIndex: {get_param: NodeIndex}
191 type: OS::TripleO::BlockStorage::Net::SoftwareConfig
193 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
194 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
195 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
196 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
197 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
198 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
199 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
202 type: OS::TripleO::Network::Ports::NetIpMap
204 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
205 ExternalIp: {get_attr: [ExternalPort, ip_address]}
206 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
207 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
208 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
209 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
210 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
211 StorageIp: {get_attr: [StoragePort, ip_address]}
212 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
213 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
214 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
215 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
216 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
217 TenantIp: {get_attr: [TenantPort, ip_address]}
218 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
219 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
220 ManagementIp: {get_attr: [ManagementPort, ip_address]}
221 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
222 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
225 type: OS::TripleO::SoftwareDeployment
227 name: NetworkDeployment
228 config: {get_resource: NetworkConfig}
229 server: {get_resource: BlockStorage}
230 actions: {get_param: NetworkDeploymentActions}
232 BlockStorageDeployment:
233 type: OS::Heat::StructuredDeployment
234 depends_on: NetworkDeployment
236 name: BlockStorageDeployment
237 server: {get_resource: BlockStorage}
238 config: {get_resource: BlockStorageConfig}
240 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
241 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
242 cinder_iscsi_ip_address:
246 IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
247 enable_package_install: {get_param: EnablePackageInstall}
248 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
250 # Map heat metadata into hiera datafiles
252 type: OS::Heat::StructuredConfig
254 group: os-apply-config
259 - heat_config_%{::deploy_config_name}
265 - all_nodes # provided by allNodesConfig
268 merge_behavior: deeper
272 service_names: {get_param: ServiceNames}
274 mapped_data: {get_param: ServiceConfigSettings}
277 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
278 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
279 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
281 mapped_data: {get_param: BlockStorageExtraConfig}
283 mapped_data: {get_param: ExtraConfig}
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]}