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: Comma-separated list of ntp servers
52 type: comma_delimited_list
55 description: Set to true to enable package installation via Puppet
61 Setting to a previously unused value during stack-update will trigger
62 package update on all nodes
65 description: Mapping of service_name -> network name. Typically set
66 via parameter_defaults in the resource registry.
70 description: The timezone to be set on Ceph nodes.
74 default: '' # Defaults to Heat created hostname
78 description: Optional mapping to override hostnames
82 Additional hiera configuration to inject into the cluster. Note
83 that ObjectStorageExtraConfig takes precedence over ExtraConfig.
85 ObjectStorageExtraConfig:
88 Role specific additional hiera configuration to inject into the cluster.
93 NetworkDeploymentActions:
94 type: comma_delimited_list
96 Heat action when to apply network configuration changes
98 SoftwareConfigTransport:
99 default: POLL_SERVER_CFN
101 How the server should receive the metadata required for software configuration.
104 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
109 The DNS domain used for the hosts. This should match the dhcp_domain
110 configured in the Undercloud neutron. Defaults to localdomain.
114 Extra properties or metadata passed to Nova for the created nodes in
115 the overcloud. It's accessible via the Nova metadata API.
119 description: Optional scheduler hints to pass to nova
128 type: OS::Nova::Server
130 image: {get_param: Image}
131 flavor: {get_param: Flavor}
132 key_name: {get_param: KeyName}
135 user_data_format: SOFTWARE_CONFIG
136 user_data: {get_resource: UserData}
139 template: {get_param: Hostname}
140 params: {get_param: HostnameMap}
141 software_config_transport: {get_param: SoftwareConfigTransport}
142 metadata: {get_param: ServerMetadata}
143 scheduler_hints: {get_param: SchedulerHints}
145 # Combine the NodeAdminUserData and NodeUserData mime archives
147 type: OS::Heat::MultipartMime
150 - config: {get_resource: NodeAdminUserData}
152 - config: {get_resource: NodeUserData}
155 # Creates the "heat-admin" user if configured via the environment
156 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
158 type: OS::TripleO::NodeAdminUserData
160 # For optional operator additional userdata
161 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
163 type: OS::TripleO::NodeUserData
166 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
168 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
169 IPPool: {get_param: SwiftStorageIPs}
170 NodeIndex: {get_param: NodeIndex}
173 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
175 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
176 IPPool: {get_param: SwiftStorageIPs}
177 NodeIndex: {get_param: NodeIndex}
180 type: OS::TripleO::SwiftStorage::Ports::StoragePort
182 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
183 IPPool: {get_param: SwiftStorageIPs}
184 NodeIndex: {get_param: NodeIndex}
187 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
189 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
190 IPPool: {get_param: SwiftStorageIPs}
191 NodeIndex: {get_param: NodeIndex}
194 type: OS::TripleO::SwiftStorage::Ports::TenantPort
196 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
197 IPPool: {get_param: SwiftStorageIPs}
198 NodeIndex: {get_param: NodeIndex}
201 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
203 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
204 IPPool: {get_param: SwiftStorageIPs}
205 NodeIndex: {get_param: NodeIndex}
208 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
210 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
211 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
212 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
213 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
214 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
215 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
216 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
219 type: OS::TripleO::Network::Ports::NetIpMap
221 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
222 ExternalIp: {get_attr: [ExternalPort, ip_address]}
223 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
224 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
225 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
226 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
227 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
228 StorageIp: {get_attr: [StoragePort, ip_address]}
229 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
230 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
231 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
232 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
233 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
234 TenantIp: {get_attr: [TenantPort, ip_address]}
235 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
236 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
237 ManagementIp: {get_attr: [ManagementPort, ip_address]}
238 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
239 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
242 type: OS::TripleO::SoftwareDeployment
244 name: NetworkDeployment
245 config: {get_resource: NetworkConfig}
246 server: {get_resource: SwiftStorage}
247 actions: {get_param: NetworkDeploymentActions}
249 SwiftStorageHieraConfig:
250 type: OS::Heat::StructuredConfig
252 group: os-apply-config
257 - heat_config_%{::deploy_config_name}
261 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
262 - all_nodes # provided by allNodesConfig
266 merge_behavior: deeper
269 raw_data: {get_file: hieradata/common.yaml}
272 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
273 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
274 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
276 mapped_data: {get_param: ObjectStorageExtraConfig}
278 mapped_data: {get_param: ExtraConfig}
280 raw_data: {get_file: hieradata/object.yaml}
281 mapped_data: # data supplied directly to this deployment configuration, etc
282 swift::swift_hash_suffix: { get_input: swift_hash_suffix }
283 tripleo::ringbuilder::build_ring: { get_input: swift_ring_build }
284 tripleo::ringbuilder::part_power: { get_input: swift_part_power }
285 tripleo::ringbuilder::replicas: {get_input: swift_replicas }
286 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
287 swift_mount_check: {get_input: swift_mount_check }
288 tripleo::ringbuilder::min_part_hours: { get_input: swift_min_part_hours }
289 ntp::servers: {get_input: ntp_servers}
290 timezone::timezone: {get_input: timezone}
291 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
292 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
293 tripleo::packages::enable_install: {get_input: enable_package_install}
294 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
297 SwiftStorageHieraDeploy:
298 type: OS::Heat::StructuredDeployment
299 depends_on: NetworkDeployment
301 name: SwiftStorageHieraDeploy
302 server: {get_resource: SwiftStorage}
303 config: {get_resource: SwiftStorageHieraConfig}
305 local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
306 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
307 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
308 swift_hash_suffix: {get_param: HashSuffix}
309 swift_mount_check: {get_param: MountCheck}
310 swift_min_part_hours: {get_param: MinPartHours}
311 swift_ring_build: {get_param: RingBuild}
312 swift_part_power: {get_param: PartPower}
313 swift_replicas: { get_param: Replicas}
314 ntp_servers: {get_param: NtpServer}
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}