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:
96 description: Command which will be run whenever configuration data changes
97 default: os-refresh-config --timeout 14400
101 type: OS::Nova::Server
104 command: {get_param: ConfigCommand}
108 flavor: {get_param: Flavor}
109 key_name: {get_param: KeyName}
112 user_data_format: SOFTWARE_CONFIG
113 user_data: {get_resource: UserData}
116 template: {get_param: Hostname}
117 params: {get_param: HostnameMap}
118 software_config_transport: {get_param: SoftwareConfigTransport}
119 metadata: {get_param: ServerMetadata}
120 scheduler_hints: {get_param: SchedulerHints}
122 # Combine the NodeAdminUserData and NodeUserData mime archives
124 type: OS::Heat::MultipartMime
127 - config: {get_resource: NodeAdminUserData}
129 - config: {get_resource: NodeUserData}
132 # Creates the "heat-admin" user if configured via the environment
133 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
135 type: OS::TripleO::NodeAdminUserData
137 # For optional operator additional userdata
138 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
140 type: OS::TripleO::NodeUserData
143 type: OS::TripleO::BlockStorage::Ports::ExternalPort
145 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
146 IPPool: {get_param: BlockStorageIPs}
147 NodeIndex: {get_param: NodeIndex}
150 type: OS::TripleO::BlockStorage::Ports::InternalApiPort
152 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
153 IPPool: {get_param: BlockStorageIPs}
154 NodeIndex: {get_param: NodeIndex}
157 type: OS::TripleO::BlockStorage::Ports::StoragePort
159 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
160 IPPool: {get_param: BlockStorageIPs}
161 NodeIndex: {get_param: NodeIndex}
164 type: OS::TripleO::BlockStorage::Ports::StorageMgmtPort
166 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
167 IPPool: {get_param: BlockStorageIPs}
168 NodeIndex: {get_param: NodeIndex}
171 type: OS::TripleO::BlockStorage::Ports::TenantPort
173 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
174 IPPool: {get_param: BlockStorageIPs}
175 NodeIndex: {get_param: NodeIndex}
178 type: OS::TripleO::BlockStorage::Ports::ManagementPort
180 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
181 IPPool: {get_param: BlockStorageIPs}
182 NodeIndex: {get_param: NodeIndex}
185 type: OS::TripleO::BlockStorage::Net::SoftwareConfig
187 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
188 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
189 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
190 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
191 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
192 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
193 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
196 type: OS::TripleO::Network::Ports::NetIpMap
198 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
199 ExternalIp: {get_attr: [ExternalPort, ip_address]}
200 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
201 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
202 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
203 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
204 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
205 StorageIp: {get_attr: [StoragePort, ip_address]}
206 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
207 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
208 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
209 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
210 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
211 TenantIp: {get_attr: [TenantPort, ip_address]}
212 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
213 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
214 ManagementIp: {get_attr: [ManagementPort, ip_address]}
215 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
216 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
219 type: OS::TripleO::SoftwareDeployment
221 name: NetworkDeployment
222 config: {get_resource: NetworkConfig}
223 server: {get_resource: BlockStorage}
224 actions: {get_param: NetworkDeploymentActions}
226 BlockStorageDeployment:
227 type: OS::Heat::StructuredDeployment
228 depends_on: NetworkDeployment
230 name: BlockStorageDeployment
231 server: {get_resource: BlockStorage}
232 config: {get_resource: BlockStorageConfig}
234 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
235 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
236 cinder_iscsi_ip_address:
240 IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, CinderIscsiNetwork]}]}
241 enable_package_install: {get_param: EnablePackageInstall}
242 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
244 # Map heat metadata into hiera datafiles
246 type: OS::Heat::StructuredConfig
248 group: os-apply-config
253 - heat_config_%{::deploy_config_name}
258 - all_nodes # provided by allNodesConfig
262 merge_behavior: deeper
265 mapped_data: {get_param: ServiceConfigSettings}
267 raw_data: {get_file: hieradata/common.yaml}
270 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
271 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
272 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
274 mapped_data: {get_param: BlockStorageExtraConfig}
276 mapped_data: {get_param: ExtraConfig}
278 raw_data: {get_file: hieradata/volume.yaml}
281 tripleo::profile::base::cinder::volume::iscsi::cinder_iscsi_ip_address: {get_input: cinder_iscsi_ip_address}
282 tripleo::packages::enable_install: {get_input: enable_package_install}
283 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
284 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
285 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
287 # Resource for site-specific injection of root certificate
289 depends_on: BlockStorageDeployment
290 type: OS::TripleO::NodeTLSCAData
292 server: {get_resource: BlockStorage}
294 # Hook for site-specific additional pre-deployment config,
295 # applying to all nodes, e.g node registration/unregistration
297 depends_on: NodeTLSCAData
298 type: OS::TripleO::NodeExtraConfig
300 server: {get_resource: BlockStorage}
303 type: OS::TripleO::Tasks::PackageUpdate
306 type: OS::Heat::SoftwareDeployment
308 name: UpdateDeployment
309 config: {get_resource: UpdateConfig}
310 server: {get_resource: BlockStorage}
313 get_param: UpdateIdentifier
320 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
321 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
322 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
323 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
324 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
325 TENANTIP TENANTHOST.DOMAIN TENANTHOST
326 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
328 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
329 DOMAIN: {get_param: CloudDomain}
330 PRIMARYHOST: {get_attr: [BlockStorage, name]}
331 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
335 - - {get_attr: [BlockStorage, name]}
337 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
341 - - {get_attr: [BlockStorage, name]}
343 STORAGEIP: {get_attr: [StoragePort, ip_address]}
347 - - {get_attr: [BlockStorage, name]}
349 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
353 - - {get_attr: [BlockStorage, name]}
355 TENANTIP: {get_attr: [TenantPort, ip_address]}
359 - - {get_attr: [BlockStorage, name]}
361 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
365 - - {get_attr: [BlockStorage, name]}
367 nova_server_resource:
368 description: Heat resource handle for the block storage server
370 {get_resource: BlockStorage}
372 description: IP address of the server in the external network
373 value: {get_attr: [ExternalPort, ip_address]}
374 internal_api_ip_address:
375 description: IP address of the server in the internal_api network
376 value: {get_attr: [InternalApiPort, ip_address]}
378 description: IP address of the server in the storage network
379 value: {get_attr: [StoragePort, ip_address]}
380 storage_mgmt_ip_address:
381 description: IP address of the server in the storage_mgmt network
382 value: {get_attr: [StorageMgmtPort, ip_address]}
384 description: IP address of the server in the tenant network
385 value: {get_attr: [TenantPort, ip_address]}
386 management_ip_address:
387 description: IP address of the server in the management network
388 value: {get_attr: [ManagementPort, ip_address]}
390 description: identifier which changes if the node configuration may need re-applying
394 - - {get_attr: [BlockStorageDeployment, deploy_stdout]}
395 - {get_attr: [NodeTLSCAData, deploy_stdout]}
396 - {get_param: UpdateIdentifier}