1 heat_template_version: 2016-10-14
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]
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}
275 - {get_param: ServiceConfigSettings}
276 - values: {get_attr: [NetIpMap, net_ip_map]}
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}
289 tripleo::profile::base::cinder::volume::iscsi::cinder_iscsi_ip_address: {get_input: cinder_iscsi_ip_address}
290 tripleo::packages::enable_install: {get_input: enable_package_install}
291 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
292 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
293 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
295 # Resource for site-specific injection of root certificate
297 depends_on: BlockStorageDeployment
298 type: OS::TripleO::NodeTLSCAData
300 server: {get_resource: BlockStorage}
302 # Hook for site-specific additional pre-deployment config,
303 # applying to all nodes, e.g node registration/unregistration
305 depends_on: NodeTLSCAData
306 type: OS::TripleO::NodeExtraConfig
308 server: {get_resource: BlockStorage}
311 type: OS::TripleO::Tasks::PackageUpdate
314 type: OS::Heat::SoftwareDeployment
316 name: UpdateDeployment
317 config: {get_resource: UpdateConfig}
318 server: {get_resource: BlockStorage}
321 get_param: UpdateIdentifier
325 description: IP address of the server in the ctlplane network
326 value: {get_attr: [BlockStorage, networks, ctlplane, 0]}
328 description: Hostname of the server
329 value: {get_attr: [BlockStorage, name]}
334 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
335 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
336 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
337 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
338 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
339 TENANTIP TENANTHOST.DOMAIN TENANTHOST
340 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
342 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
343 DOMAIN: {get_param: CloudDomain}
344 PRIMARYHOST: {get_attr: [BlockStorage, name]}
345 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
349 - - {get_attr: [BlockStorage, name]}
351 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
355 - - {get_attr: [BlockStorage, name]}
357 STORAGEIP: {get_attr: [StoragePort, ip_address]}
361 - - {get_attr: [BlockStorage, name]}
363 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
367 - - {get_attr: [BlockStorage, name]}
369 TENANTIP: {get_attr: [TenantPort, ip_address]}
373 - - {get_attr: [BlockStorage, name]}
375 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
379 - - {get_attr: [BlockStorage, name]}
381 nova_server_resource:
382 description: Heat resource handle for the block storage server
384 {get_resource: BlockStorage}
386 description: IP address of the server in the external network
387 value: {get_attr: [ExternalPort, ip_address]}
388 internal_api_ip_address:
389 description: IP address of the server in the internal_api network
390 value: {get_attr: [InternalApiPort, ip_address]}
392 description: IP address of the server in the storage network
393 value: {get_attr: [StoragePort, ip_address]}
394 storage_mgmt_ip_address:
395 description: IP address of the server in the storage_mgmt network
396 value: {get_attr: [StorageMgmtPort, ip_address]}
398 description: IP address of the server in the tenant network
399 value: {get_attr: [TenantPort, ip_address]}
400 management_ip_address:
401 description: IP address of the server in the management network
402 value: {get_attr: [ManagementPort, ip_address]}