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
269 merge_behavior: deeper
273 service_names: {get_param: ServiceNames}
275 mapped_data: {get_param: ServiceConfigSettings}
277 raw_data: {get_file: hieradata/common.yaml}
280 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
281 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
282 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
284 mapped_data: {get_param: BlockStorageExtraConfig}
286 mapped_data: {get_param: ExtraConfig}
288 raw_data: {get_file: hieradata/volume.yaml}
291 tripleo::profile::base::cinder::volume::iscsi::cinder_iscsi_ip_address: {get_input: cinder_iscsi_ip_address}
292 tripleo::packages::enable_install: {get_input: enable_package_install}
293 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
294 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
295 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
297 # Resource for site-specific injection of root certificate
299 depends_on: BlockStorageDeployment
300 type: OS::TripleO::NodeTLSCAData
302 server: {get_resource: BlockStorage}
304 # Hook for site-specific additional pre-deployment config,
305 # applying to all nodes, e.g node registration/unregistration
307 depends_on: NodeTLSCAData
308 type: OS::TripleO::NodeExtraConfig
310 server: {get_resource: BlockStorage}
313 type: OS::TripleO::Tasks::PackageUpdate
316 type: OS::Heat::SoftwareDeployment
318 name: UpdateDeployment
319 config: {get_resource: UpdateConfig}
320 server: {get_resource: BlockStorage}
323 get_param: UpdateIdentifier
327 description: IP address of the server in the ctlplane network
328 value: {get_attr: [BlockStorage, networks, ctlplane, 0]}
330 description: Hostname of the server
331 value: {get_attr: [BlockStorage, name]}
336 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
337 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
338 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
339 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
340 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
341 TENANTIP TENANTHOST.DOMAIN TENANTHOST
342 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
344 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
345 DOMAIN: {get_param: CloudDomain}
346 PRIMARYHOST: {get_attr: [BlockStorage, name]}
347 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
351 - - {get_attr: [BlockStorage, name]}
353 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
357 - - {get_attr: [BlockStorage, name]}
359 STORAGEIP: {get_attr: [StoragePort, ip_address]}
363 - - {get_attr: [BlockStorage, name]}
365 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
369 - - {get_attr: [BlockStorage, name]}
371 TENANTIP: {get_attr: [TenantPort, ip_address]}
375 - - {get_attr: [BlockStorage, name]}
377 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
381 - - {get_attr: [BlockStorage, name]}
383 nova_server_resource:
384 description: Heat resource handle for the block storage server
386 {get_resource: BlockStorage}
388 description: IP address of the server in the external network
389 value: {get_attr: [ExternalPort, ip_address]}
390 internal_api_ip_address:
391 description: IP address of the server in the internal_api network
392 value: {get_attr: [InternalApiPort, ip_address]}
394 description: IP address of the server in the storage network
395 value: {get_attr: [StoragePort, ip_address]}
396 storage_mgmt_ip_address:
397 description: IP address of the server in the storage_mgmt network
398 value: {get_attr: [StorageMgmtPort, ip_address]}
400 description: IP address of the server in the tenant network
401 value: {get_attr: [TenantPort, ip_address]}
402 management_ip_address:
403 description: IP address of the server in the management network
404 value: {get_attr: [ManagementPort, ip_address]}