1 heat_template_version: 2015-04-30
2 description: 'OpenStack cinder storage configured by Puppet'
5 default: overcloud-cinder-volume
10 Additional hiera configuration to inject into the cluster. Note
11 that BlockStorageExtraConfig takes precedence over ExtraConfig.
13 BlockStorageExtraConfig:
16 Role specific additional hiera configuration to inject into the cluster.
22 description: Flavor for block storage nodes to request when deploying.
25 - custom_constraint: nova.flavor
28 description: Name of an existing Nova key pair to enable SSH access to the instances
30 SnmpdReadonlyUserName:
32 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
34 SnmpdReadonlyUserPassword:
35 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
40 description: Set to true to enable package installation via Puppet
46 Setting to a previously unused value during stack-update will trigger
47 package update on all nodes
50 default: '' # Defaults to Heat created hostname
54 description: Optional mapping to override hostnames
57 description: Mapping of service_name -> network name. Typically set
58 via parameter_defaults in the resource registry.
60 NetworkDeploymentActions:
61 type: comma_delimited_list
63 Heat action when to apply network configuration changes
65 SoftwareConfigTransport:
66 default: POLL_SERVER_CFN
68 How the server should receive the metadata required for software configuration.
71 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
76 The DNS domain used for the hosts. This should match the dhcp_domain
77 configured in the Undercloud neutron. Defaults to localdomain.
81 Extra properties or metadata passed to Nova for the created nodes in
82 the overcloud. It's accessible via the Nova metadata API.
86 description: Optional scheduler hints to pass to nova
91 ServiceConfigSettings:
95 type: comma_delimited_list
99 description: Command which will be run whenever configuration data changes
100 default: os-refresh-config --timeout 14400
104 type: OS::TripleO::Server
107 command: {get_param: ConfigCommand}
111 flavor: {get_param: Flavor}
112 key_name: {get_param: KeyName}
115 user_data_format: SOFTWARE_CONFIG
116 user_data: {get_resource: UserData}
119 template: {get_param: Hostname}
120 params: {get_param: HostnameMap}
121 software_config_transport: {get_param: SoftwareConfigTransport}
122 metadata: {get_param: ServerMetadata}
123 scheduler_hints: {get_param: SchedulerHints}
125 # Combine the NodeAdminUserData and NodeUserData mime archives
127 type: OS::Heat::MultipartMime
130 - config: {get_resource: NodeAdminUserData}
132 - config: {get_resource: NodeUserData}
135 # Creates the "heat-admin" user if configured via the environment
136 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
138 type: OS::TripleO::NodeAdminUserData
140 # For optional operator additional userdata
141 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
143 type: OS::TripleO::NodeUserData
146 type: OS::TripleO::BlockStorage::Ports::ExternalPort
148 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
149 IPPool: {get_param: BlockStorageIPs}
150 NodeIndex: {get_param: NodeIndex}
153 type: OS::TripleO::BlockStorage::Ports::InternalApiPort
155 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
156 IPPool: {get_param: BlockStorageIPs}
157 NodeIndex: {get_param: NodeIndex}
160 type: OS::TripleO::BlockStorage::Ports::StoragePort
162 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
163 IPPool: {get_param: BlockStorageIPs}
164 NodeIndex: {get_param: NodeIndex}
167 type: OS::TripleO::BlockStorage::Ports::StorageMgmtPort
169 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
170 IPPool: {get_param: BlockStorageIPs}
171 NodeIndex: {get_param: NodeIndex}
174 type: OS::TripleO::BlockStorage::Ports::TenantPort
176 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
177 IPPool: {get_param: BlockStorageIPs}
178 NodeIndex: {get_param: NodeIndex}
181 type: OS::TripleO::BlockStorage::Ports::ManagementPort
183 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
184 IPPool: {get_param: BlockStorageIPs}
185 NodeIndex: {get_param: NodeIndex}
188 type: OS::TripleO::BlockStorage::Net::SoftwareConfig
190 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
191 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
192 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
193 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
194 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
195 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
196 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
199 type: OS::TripleO::Network::Ports::NetIpMap
201 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
202 ExternalIp: {get_attr: [ExternalPort, ip_address]}
203 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
204 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
205 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
206 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
207 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
208 StorageIp: {get_attr: [StoragePort, ip_address]}
209 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
210 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
211 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
212 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
213 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
214 TenantIp: {get_attr: [TenantPort, ip_address]}
215 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
216 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
217 ManagementIp: {get_attr: [ManagementPort, ip_address]}
218 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
219 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
222 type: OS::TripleO::SoftwareDeployment
224 name: NetworkDeployment
225 config: {get_resource: NetworkConfig}
226 server: {get_resource: BlockStorage}
227 actions: {get_param: NetworkDeploymentActions}
229 BlockStorageDeployment:
230 type: OS::Heat::StructuredDeployment
231 depends_on: NetworkDeployment
233 name: BlockStorageDeployment
234 server: {get_resource: BlockStorage}
235 config: {get_resource: BlockStorageConfig}
237 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
238 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
239 cinder_iscsi_ip_address:
243 IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
244 enable_package_install: {get_param: EnablePackageInstall}
245 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
247 # Map heat metadata into hiera datafiles
249 type: OS::Heat::StructuredConfig
251 group: os-apply-config
256 - heat_config_%{::deploy_config_name}
262 - all_nodes # provided by allNodesConfig
266 merge_behavior: deeper
270 service_names: {get_param: ServiceNames}
272 mapped_data: {get_param: ServiceConfigSettings}
274 raw_data: {get_file: hieradata/common.yaml}
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}
285 raw_data: {get_file: hieradata/volume.yaml}
288 tripleo::profile::base::cinder::volume::iscsi::cinder_iscsi_ip_address: {get_input: cinder_iscsi_ip_address}
289 tripleo::packages::enable_install: {get_input: enable_package_install}
290 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
291 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
292 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
294 # Resource for site-specific injection of root certificate
296 depends_on: BlockStorageDeployment
297 type: OS::TripleO::NodeTLSCAData
299 server: {get_resource: BlockStorage}
301 # Hook for site-specific additional pre-deployment config,
302 # applying to all nodes, e.g node registration/unregistration
304 depends_on: NodeTLSCAData
305 type: OS::TripleO::NodeExtraConfig
307 server: {get_resource: BlockStorage}
310 type: OS::TripleO::Tasks::PackageUpdate
313 type: OS::Heat::SoftwareDeployment
315 name: UpdateDeployment
316 config: {get_resource: UpdateConfig}
317 server: {get_resource: BlockStorage}
320 get_param: UpdateIdentifier
324 description: IP address of the server in the ctlplane network
325 value: {get_attr: [BlockStorage, networks, ctlplane, 0]}
327 description: Hostname of the server
328 value: {get_attr: [BlockStorage, name]}
333 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
334 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
335 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
336 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
337 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
338 TENANTIP TENANTHOST.DOMAIN TENANTHOST
339 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
341 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
342 DOMAIN: {get_param: CloudDomain}
343 PRIMARYHOST: {get_attr: [BlockStorage, name]}
344 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
348 - - {get_attr: [BlockStorage, name]}
350 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
354 - - {get_attr: [BlockStorage, name]}
356 STORAGEIP: {get_attr: [StoragePort, ip_address]}
360 - - {get_attr: [BlockStorage, name]}
362 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
366 - - {get_attr: [BlockStorage, name]}
368 TENANTIP: {get_attr: [TenantPort, ip_address]}
372 - - {get_attr: [BlockStorage, name]}
374 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
378 - - {get_attr: [BlockStorage, name]}
380 nova_server_resource:
381 description: Heat resource handle for the block storage server
383 {get_resource: BlockStorage}
385 description: IP address of the server in the external network
386 value: {get_attr: [ExternalPort, ip_address]}
387 internal_api_ip_address:
388 description: IP address of the server in the internal_api network
389 value: {get_attr: [InternalApiPort, ip_address]}
391 description: IP address of the server in the storage network
392 value: {get_attr: [StoragePort, ip_address]}
393 storage_mgmt_ip_address:
394 description: IP address of the server in the storage_mgmt network
395 value: {get_attr: [StorageMgmtPort, ip_address]}
397 description: IP address of the server in the tenant network
398 value: {get_attr: [TenantPort, ip_address]}
399 management_ip_address:
400 description: IP address of the server in the management network
401 value: {get_attr: [ManagementPort, ip_address]}