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:
97 type: OS::Nova::Server
101 flavor: {get_param: Flavor}
102 key_name: {get_param: KeyName}
105 user_data_format: SOFTWARE_CONFIG
106 user_data: {get_resource: UserData}
109 template: {get_param: Hostname}
110 params: {get_param: HostnameMap}
111 software_config_transport: {get_param: SoftwareConfigTransport}
112 metadata: {get_param: ServerMetadata}
113 scheduler_hints: {get_param: SchedulerHints}
115 # Combine the NodeAdminUserData and NodeUserData mime archives
117 type: OS::Heat::MultipartMime
120 - config: {get_resource: NodeAdminUserData}
122 - config: {get_resource: NodeUserData}
125 # Creates the "heat-admin" user if configured via the environment
126 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
128 type: OS::TripleO::NodeAdminUserData
130 # For optional operator additional userdata
131 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
133 type: OS::TripleO::NodeUserData
136 type: OS::TripleO::BlockStorage::Ports::ExternalPort
138 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
139 IPPool: {get_param: BlockStorageIPs}
140 NodeIndex: {get_param: NodeIndex}
143 type: OS::TripleO::BlockStorage::Ports::InternalApiPort
145 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
146 IPPool: {get_param: BlockStorageIPs}
147 NodeIndex: {get_param: NodeIndex}
150 type: OS::TripleO::BlockStorage::Ports::StoragePort
152 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
153 IPPool: {get_param: BlockStorageIPs}
154 NodeIndex: {get_param: NodeIndex}
157 type: OS::TripleO::BlockStorage::Ports::StorageMgmtPort
159 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
160 IPPool: {get_param: BlockStorageIPs}
161 NodeIndex: {get_param: NodeIndex}
164 type: OS::TripleO::BlockStorage::Ports::TenantPort
166 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
167 IPPool: {get_param: BlockStorageIPs}
168 NodeIndex: {get_param: NodeIndex}
171 type: OS::TripleO::BlockStorage::Ports::ManagementPort
173 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
174 IPPool: {get_param: BlockStorageIPs}
175 NodeIndex: {get_param: NodeIndex}
178 type: OS::TripleO::BlockStorage::Net::SoftwareConfig
180 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
181 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
182 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
183 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
184 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
185 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
186 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
189 type: OS::TripleO::Network::Ports::NetIpMap
191 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
192 ExternalIp: {get_attr: [ExternalPort, ip_address]}
193 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
194 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
195 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
196 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
197 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
198 StorageIp: {get_attr: [StoragePort, ip_address]}
199 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
200 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
201 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
202 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
203 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
204 TenantIp: {get_attr: [TenantPort, ip_address]}
205 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
206 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
207 ManagementIp: {get_attr: [ManagementPort, ip_address]}
208 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
209 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
212 type: OS::TripleO::SoftwareDeployment
214 name: NetworkDeployment
215 config: {get_resource: NetworkConfig}
216 server: {get_resource: BlockStorage}
217 actions: {get_param: NetworkDeploymentActions}
219 BlockStorageDeployment:
220 type: OS::Heat::StructuredDeployment
221 depends_on: NetworkDeployment
223 name: BlockStorageDeployment
224 server: {get_resource: BlockStorage}
225 config: {get_resource: BlockStorageConfig}
227 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
228 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
229 cinder_iscsi_ip_address:
233 IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
234 enable_package_install: {get_param: EnablePackageInstall}
235 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
237 # Map heat metadata into hiera datafiles
239 type: OS::Heat::StructuredConfig
241 group: os-apply-config
246 - heat_config_%{::deploy_config_name}
251 - all_nodes # provided by allNodesConfig
255 merge_behavior: deeper
258 mapped_data: {get_param: ServiceConfigSettings}
260 raw_data: {get_file: hieradata/common.yaml}
263 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
264 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
265 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
267 mapped_data: {get_param: BlockStorageExtraConfig}
269 mapped_data: {get_param: ExtraConfig}
271 raw_data: {get_file: hieradata/volume.yaml}
274 tripleo::profile::base::cinder::volume::iscsi::cinder_iscsi_ip_address: {get_input: cinder_iscsi_ip_address}
275 tripleo::packages::enable_install: {get_input: enable_package_install}
276 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
277 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
278 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
280 # Resource for site-specific injection of root certificate
282 depends_on: BlockStorageDeployment
283 type: OS::TripleO::NodeTLSCAData
285 server: {get_resource: BlockStorage}
287 # Hook for site-specific additional pre-deployment config,
288 # applying to all nodes, e.g node registration/unregistration
290 depends_on: NodeTLSCAData
291 type: OS::TripleO::NodeExtraConfig
293 server: {get_resource: BlockStorage}
296 type: OS::TripleO::Tasks::PackageUpdate
299 type: OS::Heat::SoftwareDeployment
301 name: UpdateDeployment
302 config: {get_resource: UpdateConfig}
303 server: {get_resource: BlockStorage}
306 get_param: UpdateIdentifier
313 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
314 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
315 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
316 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
317 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
318 TENANTIP TENANTHOST.DOMAIN TENANTHOST
319 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
321 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
322 DOMAIN: {get_param: CloudDomain}
323 PRIMARYHOST: {get_attr: [BlockStorage, name]}
324 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
328 - - {get_attr: [BlockStorage, name]}
330 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
334 - - {get_attr: [BlockStorage, name]}
336 STORAGEIP: {get_attr: [StoragePort, ip_address]}
340 - - {get_attr: [BlockStorage, name]}
342 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
346 - - {get_attr: [BlockStorage, name]}
348 TENANTIP: {get_attr: [TenantPort, ip_address]}
352 - - {get_attr: [BlockStorage, name]}
354 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
358 - - {get_attr: [BlockStorage, name]}
360 nova_server_resource:
361 description: Heat resource handle for the block storage server
363 {get_resource: BlockStorage}
365 description: IP address of the server in the external network
366 value: {get_attr: [ExternalPort, ip_address]}
367 internal_api_ip_address:
368 description: IP address of the server in the internal_api network
369 value: {get_attr: [InternalApiPort, ip_address]}
371 description: IP address of the server in the storage network
372 value: {get_attr: [StoragePort, ip_address]}
373 storage_mgmt_ip_address:
374 description: IP address of the server in the storage_mgmt network
375 value: {get_attr: [StorageMgmtPort, ip_address]}
377 description: IP address of the server in the tenant network
378 value: {get_attr: [TenantPort, ip_address]}
379 management_ip_address:
380 description: IP address of the server in the management network
381 value: {get_attr: [ManagementPort, ip_address]}