1 heat_template_version: 2015-04-30
2 description: 'OpenStack swift storage node configured by Puppet'
5 description: Flavor for Swift storage nodes to request when deploying.
8 - custom_constraint: nova.flavor
10 description: A random string to be used as a salt when hashing to determine mappings
15 default: overcloud-swift-storage
19 description: Name of an existing Nova key pair to enable SSH access to the instances
24 description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
27 description: Partition Power to use when building Swift rings
31 description: Whether to manage Swift rings or not
36 description: How many replicas to use in the swift rings.
37 SnmpdReadonlyUserName:
39 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
41 SnmpdReadonlyUserPassword:
42 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
47 description: Set to true to enable package installation via Puppet
53 Setting to a previously unused value during stack-update will trigger
54 package update on all nodes
57 description: Mapping of service_name -> network name. Typically set
58 via parameter_defaults in the resource registry.
62 default: '' # Defaults to Heat created hostname
66 description: Optional mapping to override hostnames
70 Additional hiera configuration to inject into the cluster. Note
71 that ObjectStorageExtraConfig takes precedence over ExtraConfig.
73 ObjectStorageExtraConfig:
76 Role specific additional hiera configuration to inject into the cluster.
81 NetworkDeploymentActions:
82 type: comma_delimited_list
84 Heat action when to apply network configuration changes
86 SoftwareConfigTransport:
87 default: POLL_SERVER_CFN
89 How the server should receive the metadata required for software configuration.
92 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
97 The DNS domain used for the hosts. This should match the dhcp_domain
98 configured in the Undercloud neutron. Defaults to localdomain.
102 Extra properties or metadata passed to Nova for the created nodes in
103 the overcloud. It's accessible via the Nova metadata API.
107 description: Optional scheduler hints to pass to nova
112 ServiceConfigSettings:
117 description: Command which will be run whenever configuration data changes
118 default: os-refresh-config --timeout 14400
123 type: OS::Nova::Server
126 command: {get_param: ConfigCommand}
128 image: {get_param: Image}
129 flavor: {get_param: Flavor}
130 key_name: {get_param: KeyName}
133 user_data_format: SOFTWARE_CONFIG
134 user_data: {get_resource: UserData}
137 template: {get_param: Hostname}
138 params: {get_param: HostnameMap}
139 software_config_transport: {get_param: SoftwareConfigTransport}
140 metadata: {get_param: ServerMetadata}
141 scheduler_hints: {get_param: SchedulerHints}
143 # Combine the NodeAdminUserData and NodeUserData mime archives
145 type: OS::Heat::MultipartMime
148 - config: {get_resource: NodeAdminUserData}
150 - config: {get_resource: NodeUserData}
153 # Creates the "heat-admin" user if configured via the environment
154 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
156 type: OS::TripleO::NodeAdminUserData
158 # For optional operator additional userdata
159 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
161 type: OS::TripleO::NodeUserData
164 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
166 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
167 IPPool: {get_param: SwiftStorageIPs}
168 NodeIndex: {get_param: NodeIndex}
171 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
173 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
174 IPPool: {get_param: SwiftStorageIPs}
175 NodeIndex: {get_param: NodeIndex}
178 type: OS::TripleO::SwiftStorage::Ports::StoragePort
180 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
181 IPPool: {get_param: SwiftStorageIPs}
182 NodeIndex: {get_param: NodeIndex}
185 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
187 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
188 IPPool: {get_param: SwiftStorageIPs}
189 NodeIndex: {get_param: NodeIndex}
192 type: OS::TripleO::SwiftStorage::Ports::TenantPort
194 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
195 IPPool: {get_param: SwiftStorageIPs}
196 NodeIndex: {get_param: NodeIndex}
199 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
201 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
202 IPPool: {get_param: SwiftStorageIPs}
203 NodeIndex: {get_param: NodeIndex}
206 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
208 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
209 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
210 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
211 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
212 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
213 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
214 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
217 type: OS::TripleO::Network::Ports::NetIpMap
219 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
220 ExternalIp: {get_attr: [ExternalPort, ip_address]}
221 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
222 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
223 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
224 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
225 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
226 StorageIp: {get_attr: [StoragePort, ip_address]}
227 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
228 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
229 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
230 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
231 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
232 TenantIp: {get_attr: [TenantPort, ip_address]}
233 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
234 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
235 ManagementIp: {get_attr: [ManagementPort, ip_address]}
236 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
237 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
240 type: OS::TripleO::SoftwareDeployment
242 name: NetworkDeployment
243 config: {get_resource: NetworkConfig}
244 server: {get_resource: SwiftStorage}
245 actions: {get_param: NetworkDeploymentActions}
247 SwiftStorageHieraConfig:
248 type: OS::Heat::StructuredConfig
250 group: os-apply-config
255 - heat_config_%{::deploy_config_name}
260 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
261 - all_nodes # provided by allNodesConfig
265 merge_behavior: deeper
268 mapped_data: {get_param: ServiceConfigSettings}
270 raw_data: {get_file: hieradata/common.yaml}
273 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
274 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
275 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
277 mapped_data: {get_param: ObjectStorageExtraConfig}
279 mapped_data: {get_param: ExtraConfig}
281 raw_data: {get_file: hieradata/object.yaml}
282 mapped_data: # data supplied directly to this deployment configuration, etc
283 swift::swift_hash_path_suffix: { get_input: swift_hash_suffix }
284 tripleo::ringbuilder::build_ring: { get_input: swift_ring_build }
285 tripleo::ringbuilder::part_power: { get_input: swift_part_power }
286 tripleo::ringbuilder::replicas: {get_input: swift_replicas }
287 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
288 tripleo::ringbuilder::min_part_hours: { get_input: swift_min_part_hours }
289 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
290 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
291 tripleo::packages::enable_install: {get_input: enable_package_install}
292 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
295 SwiftStorageHieraDeploy:
296 type: OS::Heat::StructuredDeployment
297 depends_on: NetworkDeployment
299 name: SwiftStorageHieraDeploy
300 server: {get_resource: SwiftStorage}
301 config: {get_resource: SwiftStorageHieraConfig}
303 local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
304 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
305 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
306 swift_hash_suffix: {get_param: HashSuffix}
307 swift_min_part_hours: {get_param: MinPartHours}
308 swift_ring_build: {get_param: RingBuild}
309 swift_part_power: {get_param: PartPower}
310 swift_replicas: { get_param: Replicas}
311 enable_package_install: {get_param: EnablePackageInstall}
312 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
313 swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
315 # Resource for site-specific injection of root certificate
317 depends_on: SwiftStorageHieraDeploy
318 type: OS::TripleO::NodeTLSCAData
320 server: {get_resource: SwiftStorage}
322 # Hook for site-specific additional pre-deployment config,
323 # applying to all nodes, e.g node registration/unregistration
325 depends_on: NodeTLSCAData
326 type: OS::TripleO::NodeExtraConfig
328 server: {get_resource: SwiftStorage}
331 type: OS::TripleO::Tasks::PackageUpdate
334 type: OS::Heat::SoftwareDeployment
336 config: {get_resource: UpdateConfig}
337 server: {get_resource: SwiftStorage}
340 get_param: UpdateIdentifier
347 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
348 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
349 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
350 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
351 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
352 TENANTIP TENANTHOST.DOMAIN TENANTHOST
353 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
355 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
356 DOMAIN: {get_param: CloudDomain}
357 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
358 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
362 - - {get_attr: [SwiftStorage, name]}
364 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
368 - - {get_attr: [SwiftStorage, name]}
370 STORAGEIP: {get_attr: [StoragePort, ip_address]}
374 - - {get_attr: [SwiftStorage, name]}
376 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
380 - - {get_attr: [SwiftStorage, name]}
382 TENANTIP: {get_attr: [TenantPort, ip_address]}
386 - - {get_attr: [SwiftStorage, name]}
388 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
392 - - {get_attr: [SwiftStorage, name]}
394 nova_server_resource:
395 description: Heat resource handle for the swift storage server
397 {get_resource: SwiftStorage}
399 description: Swift device formatted for swift-ring-builder
402 template: 'r1z1-IP:%PORT%/d1'
404 IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
406 description: IP address of the server in the external network
407 value: {get_attr: [ExternalPort, ip_address]}
408 internal_api_ip_address:
409 description: IP address of the server in the internal_api network
410 value: {get_attr: [InternalApiPort, ip_address]}
412 description: IP address of the server in the storage network
413 value: {get_attr: [StoragePort, ip_address]}
414 storage_mgmt_ip_address:
415 description: IP address of the server in the storage_mgmt network
416 value: {get_attr: [StorageMgmtPort, ip_address]}
418 description: IP address of the server in the tenant network
419 value: {get_attr: [TenantPort, ip_address]}
420 management_ip_address:
421 description: IP address of the server in the management network
422 value: {get_attr: [ManagementPort, ip_address]}
424 description: identifier which changes if the node configuration may need re-applying
428 - - {get_attr: [SwiftStorageHieraDeploy, deploy_stdout]}
429 - {get_attr: [NodeTLSCAData, deploy_stdout]}
430 - {get_param: UpdateIdentifier}