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
23 description: Value of mount_check in Swift account/container/object -server.conf
28 description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
31 description: Partition Power to use when building Swift rings
35 description: Whether to manage Swift rings or not
40 description: How many replicas to use in the swift rings.
41 SnmpdReadonlyUserName:
43 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
45 SnmpdReadonlyUserPassword:
46 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
51 description: Set to true to enable package installation via Puppet
57 Setting to a previously unused value during stack-update will trigger
58 package update on all nodes
61 description: Mapping of service_name -> network name. Typically set
62 via parameter_defaults in the resource registry.
66 description: The timezone to be set on Ceph nodes.
70 default: '' # Defaults to Heat created hostname
74 description: Optional mapping to override hostnames
78 Additional hiera configuration to inject into the cluster. Note
79 that ObjectStorageExtraConfig takes precedence over ExtraConfig.
81 ObjectStorageExtraConfig:
84 Role specific additional hiera configuration to inject into the cluster.
89 NetworkDeploymentActions:
90 type: comma_delimited_list
92 Heat action when to apply network configuration changes
94 SoftwareConfigTransport:
95 default: POLL_SERVER_CFN
97 How the server should receive the metadata required for software configuration.
100 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
105 The DNS domain used for the hosts. This should match the dhcp_domain
106 configured in the Undercloud neutron. Defaults to localdomain.
110 Extra properties or metadata passed to Nova for the created nodes in
111 the overcloud. It's accessible via the Nova metadata API.
115 description: Optional scheduler hints to pass to nova
120 ServiceConfigSettings:
127 type: OS::Nova::Server
129 image: {get_param: Image}
130 flavor: {get_param: Flavor}
131 key_name: {get_param: KeyName}
134 user_data_format: SOFTWARE_CONFIG
135 user_data: {get_resource: UserData}
138 template: {get_param: Hostname}
139 params: {get_param: HostnameMap}
140 software_config_transport: {get_param: SoftwareConfigTransport}
141 metadata: {get_param: ServerMetadata}
142 scheduler_hints: {get_param: SchedulerHints}
144 # Combine the NodeAdminUserData and NodeUserData mime archives
146 type: OS::Heat::MultipartMime
149 - config: {get_resource: NodeAdminUserData}
151 - config: {get_resource: NodeUserData}
154 # Creates the "heat-admin" user if configured via the environment
155 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
157 type: OS::TripleO::NodeAdminUserData
159 # For optional operator additional userdata
160 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
162 type: OS::TripleO::NodeUserData
165 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
167 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
168 IPPool: {get_param: SwiftStorageIPs}
169 NodeIndex: {get_param: NodeIndex}
172 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
174 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
175 IPPool: {get_param: SwiftStorageIPs}
176 NodeIndex: {get_param: NodeIndex}
179 type: OS::TripleO::SwiftStorage::Ports::StoragePort
181 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
182 IPPool: {get_param: SwiftStorageIPs}
183 NodeIndex: {get_param: NodeIndex}
186 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
188 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
189 IPPool: {get_param: SwiftStorageIPs}
190 NodeIndex: {get_param: NodeIndex}
193 type: OS::TripleO::SwiftStorage::Ports::TenantPort
195 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
196 IPPool: {get_param: SwiftStorageIPs}
197 NodeIndex: {get_param: NodeIndex}
200 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
202 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
203 IPPool: {get_param: SwiftStorageIPs}
204 NodeIndex: {get_param: NodeIndex}
207 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
209 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
210 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
211 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
212 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
213 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
214 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
215 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
218 type: OS::TripleO::Network::Ports::NetIpMap
220 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
221 ExternalIp: {get_attr: [ExternalPort, ip_address]}
222 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
223 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
224 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
225 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
226 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
227 StorageIp: {get_attr: [StoragePort, ip_address]}
228 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
229 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
230 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
231 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
232 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
233 TenantIp: {get_attr: [TenantPort, ip_address]}
234 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
235 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
236 ManagementIp: {get_attr: [ManagementPort, ip_address]}
237 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
238 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
241 type: OS::TripleO::SoftwareDeployment
243 name: NetworkDeployment
244 config: {get_resource: NetworkConfig}
245 server: {get_resource: SwiftStorage}
246 actions: {get_param: NetworkDeploymentActions}
248 SwiftStorageHieraConfig:
249 type: OS::Heat::StructuredConfig
251 group: os-apply-config
256 - heat_config_%{::deploy_config_name}
261 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
262 - all_nodes # provided by allNodesConfig
266 merge_behavior: deeper
269 mapped_data: {get_param: ServiceConfigSettings}
271 raw_data: {get_file: hieradata/common.yaml}
274 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
275 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
276 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
278 mapped_data: {get_param: ObjectStorageExtraConfig}
280 mapped_data: {get_param: ExtraConfig}
282 raw_data: {get_file: hieradata/object.yaml}
283 mapped_data: # data supplied directly to this deployment configuration, etc
284 swift::swift_hash_path_suffix: { get_input: swift_hash_suffix }
285 tripleo::ringbuilder::build_ring: { get_input: swift_ring_build }
286 tripleo::ringbuilder::part_power: { get_input: swift_part_power }
287 tripleo::ringbuilder::replicas: {get_input: swift_replicas }
288 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
289 swift_mount_check: {get_input: swift_mount_check }
290 tripleo::ringbuilder::min_part_hours: { get_input: swift_min_part_hours }
291 timezone::timezone: {get_input: timezone}
292 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
293 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
294 tripleo::packages::enable_install: {get_input: enable_package_install}
295 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
298 SwiftStorageHieraDeploy:
299 type: OS::Heat::StructuredDeployment
300 depends_on: NetworkDeployment
302 name: SwiftStorageHieraDeploy
303 server: {get_resource: SwiftStorage}
304 config: {get_resource: SwiftStorageHieraConfig}
306 local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
307 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
308 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
309 swift_hash_suffix: {get_param: HashSuffix}
310 swift_mount_check: {get_param: MountCheck}
311 swift_min_part_hours: {get_param: MinPartHours}
312 swift_ring_build: {get_param: RingBuild}
313 swift_part_power: {get_param: PartPower}
314 swift_replicas: { get_param: Replicas}
315 timezone: {get_param: TimeZone}
316 enable_package_install: {get_param: EnablePackageInstall}
317 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
318 swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
320 # Resource for site-specific injection of root certificate
322 depends_on: SwiftStorageHieraDeploy
323 type: OS::TripleO::NodeTLSCAData
325 server: {get_resource: SwiftStorage}
327 # Hook for site-specific additional pre-deployment config,
328 # applying to all nodes, e.g node registration/unregistration
330 depends_on: NodeTLSCAData
331 type: OS::TripleO::NodeExtraConfig
333 server: {get_resource: SwiftStorage}
336 type: OS::TripleO::Tasks::PackageUpdate
339 type: OS::Heat::SoftwareDeployment
341 config: {get_resource: UpdateConfig}
342 server: {get_resource: SwiftStorage}
345 get_param: UpdateIdentifier
352 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
353 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
354 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
355 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
356 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
357 TENANTIP TENANTHOST.DOMAIN TENANTHOST
358 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
360 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
361 DOMAIN: {get_param: CloudDomain}
362 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
363 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
367 - - {get_attr: [SwiftStorage, name]}
369 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
373 - - {get_attr: [SwiftStorage, name]}
375 STORAGEIP: {get_attr: [StoragePort, ip_address]}
379 - - {get_attr: [SwiftStorage, name]}
381 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
385 - - {get_attr: [SwiftStorage, name]}
387 TENANTIP: {get_attr: [TenantPort, ip_address]}
391 - - {get_attr: [SwiftStorage, name]}
393 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
397 - - {get_attr: [SwiftStorage, name]}
399 nova_server_resource:
400 description: Heat resource handle for the swift storage server
402 {get_resource: SwiftStorage}
404 description: Swift device formatted for swift-ring-builder
407 template: 'r1z1-IP:%PORT%/d1'
409 IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
411 description: IP address of the server in the external network
412 value: {get_attr: [ExternalPort, ip_address]}
413 internal_api_ip_address:
414 description: IP address of the server in the internal_api network
415 value: {get_attr: [InternalApiPort, ip_address]}
417 description: IP address of the server in the storage network
418 value: {get_attr: [StoragePort, ip_address]}
419 storage_mgmt_ip_address:
420 description: IP address of the server in the storage_mgmt network
421 value: {get_attr: [StorageMgmtPort, ip_address]}
423 description: IP address of the server in the tenant network
424 value: {get_attr: [TenantPort, ip_address]}
425 management_ip_address:
426 description: IP address of the server in the management network
427 value: {get_attr: [ManagementPort, ip_address]}
429 description: identifier which changes if the node configuration may need re-applying
433 - - {get_attr: [SwiftStorageHieraDeploy, deploy_stdout]}
434 - {get_attr: [NodeTLSCAData, deploy_stdout]}
435 - {get_param: UpdateIdentifier}