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
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: Comma-separated list of ntp servers
48 type: comma_delimited_list
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
124 type: OS::Nova::Server
126 image: {get_param: Image}
127 flavor: {get_param: Flavor}
128 key_name: {get_param: KeyName}
131 user_data_format: SOFTWARE_CONFIG
132 user_data: {get_resource: UserData}
135 template: {get_param: Hostname}
136 params: {get_param: HostnameMap}
137 software_config_transport: {get_param: SoftwareConfigTransport}
138 metadata: {get_param: ServerMetadata}
139 scheduler_hints: {get_param: SchedulerHints}
141 # Combine the NodeAdminUserData and NodeUserData mime archives
143 type: OS::Heat::MultipartMime
146 - config: {get_resource: NodeAdminUserData}
148 - config: {get_resource: NodeUserData}
151 # Creates the "heat-admin" user if configured via the environment
152 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
154 type: OS::TripleO::NodeAdminUserData
156 # For optional operator additional userdata
157 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
159 type: OS::TripleO::NodeUserData
162 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
164 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
165 IPPool: {get_param: SwiftStorageIPs}
166 NodeIndex: {get_param: NodeIndex}
169 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
171 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
172 IPPool: {get_param: SwiftStorageIPs}
173 NodeIndex: {get_param: NodeIndex}
176 type: OS::TripleO::SwiftStorage::Ports::StoragePort
178 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
179 IPPool: {get_param: SwiftStorageIPs}
180 NodeIndex: {get_param: NodeIndex}
183 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
185 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
186 IPPool: {get_param: SwiftStorageIPs}
187 NodeIndex: {get_param: NodeIndex}
190 type: OS::TripleO::SwiftStorage::Ports::TenantPort
192 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
193 IPPool: {get_param: SwiftStorageIPs}
194 NodeIndex: {get_param: NodeIndex}
197 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
199 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
200 IPPool: {get_param: SwiftStorageIPs}
201 NodeIndex: {get_param: NodeIndex}
204 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
206 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
207 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
208 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
209 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
210 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
211 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
212 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
215 type: OS::TripleO::Network::Ports::NetIpMap
217 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
218 ExternalIp: {get_attr: [ExternalPort, ip_address]}
219 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
220 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
221 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
222 StorageIp: {get_attr: [StoragePort, ip_address]}
223 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
224 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
225 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
226 TenantIp: {get_attr: [TenantPort, ip_address]}
227 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
228 ManagementIp: {get_attr: [ManagementPort, ip_address]}
229 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
232 type: OS::TripleO::SoftwareDeployment
234 name: NetworkDeployment
235 config: {get_resource: NetworkConfig}
236 server: {get_resource: SwiftStorage}
237 actions: {get_param: NetworkDeploymentActions}
239 SwiftStorageHieraConfig:
240 type: OS::Heat::StructuredConfig
242 group: os-apply-config
247 - heat_config_%{::deploy_config_name}
251 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
252 - all_nodes # provided by allNodesConfig
257 raw_data: {get_file: hieradata/common.yaml}
259 mapped_data: {get_param: ObjectStorageExtraConfig}
261 mapped_data: {get_param: ExtraConfig}
263 raw_data: {get_file: hieradata/object.yaml}
264 mapped_data: # data supplied directly to this deployment configuration, etc
265 swift::swift_hash_suffix: { get_input: swift_hash_suffix }
266 tripleo::ringbuilder::part_power: { get_input: swift_part_power }
267 tripleo::ringbuilder::replicas: {get_input: swift_replicas }
269 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
270 swift_mount_check: {get_input: swift_mount_check }
271 tripleo::ringbuilder::min_part_hours: { get_input: swift_min_part_hours }
272 ntp::servers: {get_input: ntp_servers}
273 timezone::timezone: {get_input: timezone}
274 # NOTE(dprince): build_ring support is currently not wired in.
275 # See: https://review.openstack.org/#/c/109225/
276 tripleo::ringbuilder::build_ring: True
277 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
278 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
279 tripleo::packages::enable_install: {get_input: enable_package_install}
280 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
283 SwiftStorageHieraDeploy:
284 type: OS::Heat::StructuredDeployment
285 depends_on: NetworkDeployment
287 name: SwiftStorageHieraDeploy
288 server: {get_resource: SwiftStorage}
289 config: {get_resource: SwiftStorageHieraConfig}
291 local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
292 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
293 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
294 swift_hash_suffix: {get_param: HashSuffix}
295 swift_mount_check: {get_param: MountCheck}
296 swift_min_part_hours: {get_param: MinPartHours}
297 swift_part_power: {get_param: PartPower}
298 swift_replicas: { get_param: Replicas}
299 ntp_servers: {get_param: NtpServer}
300 timezone: {get_param: TimeZone}
301 enable_package_install: {get_param: EnablePackageInstall}
302 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
303 swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
305 # Resource for site-specific injection of root certificate
307 depends_on: SwiftStorageHieraDeploy
308 type: OS::TripleO::NodeTLSCAData
310 server: {get_resource: SwiftStorage}
312 # Hook for site-specific additional pre-deployment config,
313 # applying to all nodes, e.g node registration/unregistration
315 depends_on: NodeTLSCAData
316 type: OS::TripleO::NodeExtraConfig
318 server: {get_resource: SwiftStorage}
321 type: OS::TripleO::Tasks::PackageUpdate
324 type: OS::Heat::SoftwareDeployment
326 config: {get_resource: UpdateConfig}
327 server: {get_resource: SwiftStorage}
330 get_param: UpdateIdentifier
337 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
338 EXTERNALIP EXTERNALHOST
339 INTERNAL_APIIP INTERNAL_APIHOST
340 STORAGEIP STORAGEHOST
341 STORAGE_MGMTIP STORAGE_MGMTHOST
343 MANAGEMENTIP MANAGEMENTHOST
345 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
346 DOMAIN: {get_param: CloudDomain}
347 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
348 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
352 - - {get_attr: [SwiftStorage, name]}
354 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
358 - - {get_attr: [SwiftStorage, name]}
360 STORAGEIP: {get_attr: [StoragePort, ip_address]}
364 - - {get_attr: [SwiftStorage, name]}
366 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
370 - - {get_attr: [SwiftStorage, name]}
372 TENANTIP: {get_attr: [TenantPort, ip_address]}
376 - - {get_attr: [SwiftStorage, name]}
378 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
382 - - {get_attr: [SwiftStorage, name]}
384 nova_server_resource:
385 description: Heat resource handle for the swift storage server
387 {get_resource: SwiftStorage}
389 description: Swift device formatted for swift-ring-builder
392 template: 'r1z1-IP:%PORT%/d1'
394 IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
396 description: IP address of the server in the external network
397 value: {get_attr: [ExternalPort, ip_address]}
398 internal_api_ip_address:
399 description: IP address of the server in the internal_api network
400 value: {get_attr: [InternalApiPort, ip_address]}
402 description: IP address of the server in the storage network
403 value: {get_attr: [StoragePort, ip_address]}
404 storage_mgmt_ip_address:
405 description: IP address of the server in the storage_mgmt network
406 value: {get_attr: [StorageMgmtPort, ip_address]}
408 description: IP address of the server in the tenant network
409 value: {get_attr: [TenantPort, ip_address]}
410 management_ip_address:
411 description: IP address of the server in the management network
412 value: {get_attr: [ManagementPort, ip_address]}
414 description: identifier which changes if the node configuration may need re-applying
418 - - {get_attr: [SwiftStorageHieraDeploy, deploy_stdout]}
419 - {get_attr: [NodeTLSCAData, deploy_stdout]}
420 - {get_param: UpdateIdentifier}