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:
119 type: OS::Nova::Server
121 image: {get_param: Image}
122 flavor: {get_param: Flavor}
123 key_name: {get_param: KeyName}
126 user_data_format: SOFTWARE_CONFIG
127 user_data: {get_resource: UserData}
130 template: {get_param: Hostname}
131 params: {get_param: HostnameMap}
132 software_config_transport: {get_param: SoftwareConfigTransport}
133 metadata: {get_param: ServerMetadata}
134 scheduler_hints: {get_param: SchedulerHints}
136 # Combine the NodeAdminUserData and NodeUserData mime archives
138 type: OS::Heat::MultipartMime
141 - config: {get_resource: NodeAdminUserData}
143 - config: {get_resource: NodeUserData}
146 # Creates the "heat-admin" user if configured via the environment
147 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
149 type: OS::TripleO::NodeAdminUserData
151 # For optional operator additional userdata
152 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
154 type: OS::TripleO::NodeUserData
157 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
159 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
160 IPPool: {get_param: SwiftStorageIPs}
161 NodeIndex: {get_param: NodeIndex}
164 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
166 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
167 IPPool: {get_param: SwiftStorageIPs}
168 NodeIndex: {get_param: NodeIndex}
171 type: OS::TripleO::SwiftStorage::Ports::StoragePort
173 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
174 IPPool: {get_param: SwiftStorageIPs}
175 NodeIndex: {get_param: NodeIndex}
178 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
180 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
181 IPPool: {get_param: SwiftStorageIPs}
182 NodeIndex: {get_param: NodeIndex}
185 type: OS::TripleO::SwiftStorage::Ports::TenantPort
187 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
188 IPPool: {get_param: SwiftStorageIPs}
189 NodeIndex: {get_param: NodeIndex}
192 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
194 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
195 IPPool: {get_param: SwiftStorageIPs}
196 NodeIndex: {get_param: NodeIndex}
199 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
201 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
202 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
203 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
204 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
205 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
206 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
207 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
210 type: OS::TripleO::Network::Ports::NetIpMap
212 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
213 ExternalIp: {get_attr: [ExternalPort, ip_address]}
214 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
215 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
216 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
217 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
218 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
219 StorageIp: {get_attr: [StoragePort, ip_address]}
220 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
221 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
222 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
223 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
224 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
225 TenantIp: {get_attr: [TenantPort, ip_address]}
226 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
227 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
228 ManagementIp: {get_attr: [ManagementPort, ip_address]}
229 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
230 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
233 type: OS::TripleO::SoftwareDeployment
235 name: NetworkDeployment
236 config: {get_resource: NetworkConfig}
237 server: {get_resource: SwiftStorage}
238 actions: {get_param: NetworkDeploymentActions}
240 SwiftStorageHieraConfig:
241 type: OS::Heat::StructuredConfig
243 group: os-apply-config
248 - heat_config_%{::deploy_config_name}
253 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
254 - all_nodes # provided by allNodesConfig
258 merge_behavior: deeper
261 mapped_data: {get_param: ServiceConfigSettings}
263 raw_data: {get_file: hieradata/common.yaml}
266 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
267 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
268 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
270 mapped_data: {get_param: ObjectStorageExtraConfig}
272 mapped_data: {get_param: ExtraConfig}
274 raw_data: {get_file: hieradata/object.yaml}
275 mapped_data: # data supplied directly to this deployment configuration, etc
276 swift::swift_hash_path_suffix: { get_input: swift_hash_suffix }
277 tripleo::ringbuilder::build_ring: { get_input: swift_ring_build }
278 tripleo::ringbuilder::part_power: { get_input: swift_part_power }
279 tripleo::ringbuilder::replicas: {get_input: swift_replicas }
280 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
281 tripleo::ringbuilder::min_part_hours: { get_input: swift_min_part_hours }
282 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
283 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
284 tripleo::packages::enable_install: {get_input: enable_package_install}
285 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
288 SwiftStorageHieraDeploy:
289 type: OS::Heat::StructuredDeployment
290 depends_on: NetworkDeployment
292 name: SwiftStorageHieraDeploy
293 server: {get_resource: SwiftStorage}
294 config: {get_resource: SwiftStorageHieraConfig}
296 local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
297 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
298 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
299 swift_hash_suffix: {get_param: HashSuffix}
300 swift_min_part_hours: {get_param: MinPartHours}
301 swift_ring_build: {get_param: RingBuild}
302 swift_part_power: {get_param: PartPower}
303 swift_replicas: { get_param: Replicas}
304 enable_package_install: {get_param: EnablePackageInstall}
305 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
306 swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
308 # Resource for site-specific injection of root certificate
310 depends_on: SwiftStorageHieraDeploy
311 type: OS::TripleO::NodeTLSCAData
313 server: {get_resource: SwiftStorage}
315 # Hook for site-specific additional pre-deployment config,
316 # applying to all nodes, e.g node registration/unregistration
318 depends_on: NodeTLSCAData
319 type: OS::TripleO::NodeExtraConfig
321 server: {get_resource: SwiftStorage}
324 type: OS::TripleO::Tasks::PackageUpdate
327 type: OS::Heat::SoftwareDeployment
329 config: {get_resource: UpdateConfig}
330 server: {get_resource: SwiftStorage}
333 get_param: UpdateIdentifier
340 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
341 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
342 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
343 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
344 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
345 TENANTIP TENANTHOST.DOMAIN TENANTHOST
346 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
348 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
349 DOMAIN: {get_param: CloudDomain}
350 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
351 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
355 - - {get_attr: [SwiftStorage, name]}
357 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
361 - - {get_attr: [SwiftStorage, name]}
363 STORAGEIP: {get_attr: [StoragePort, ip_address]}
367 - - {get_attr: [SwiftStorage, name]}
369 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
373 - - {get_attr: [SwiftStorage, name]}
375 TENANTIP: {get_attr: [TenantPort, ip_address]}
379 - - {get_attr: [SwiftStorage, name]}
381 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
385 - - {get_attr: [SwiftStorage, name]}
387 nova_server_resource:
388 description: Heat resource handle for the swift storage server
390 {get_resource: SwiftStorage}
392 description: Swift device formatted for swift-ring-builder
395 template: 'r1z1-IP:%PORT%/d1'
397 IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
399 description: IP address of the server in the external network
400 value: {get_attr: [ExternalPort, ip_address]}
401 internal_api_ip_address:
402 description: IP address of the server in the internal_api network
403 value: {get_attr: [InternalApiPort, ip_address]}
405 description: IP address of the server in the storage network
406 value: {get_attr: [StoragePort, ip_address]}
407 storage_mgmt_ip_address:
408 description: IP address of the server in the storage_mgmt network
409 value: {get_attr: [StorageMgmtPort, ip_address]}
411 description: IP address of the server in the tenant network
412 value: {get_attr: [TenantPort, ip_address]}
413 management_ip_address:
414 description: IP address of the server in the management network
415 value: {get_attr: [ManagementPort, ip_address]}
417 description: identifier which changes if the node configuration may need re-applying
421 - - {get_attr: [SwiftStorageHieraDeploy, deploy_stdout]}
422 - {get_attr: [NodeTLSCAData, deploy_stdout]}
423 - {get_param: UpdateIdentifier}