1 heat_template_version: 2015-04-30
2 description: 'OpenStack swift storage node configured by Puppet'
4 OvercloudSwiftStorageFlavor:
5 description: Flavor for Swift storage nodes to request when deploying.
9 - custom_constraint: nova.flavor
11 description: A random string to be used as a salt when hashing to determine mappings
16 default: overcloud-full
19 - custom_constraint: glance.image
22 description: Name of an existing Nova key pair to enable SSH access to the instances
24 SnmpdReadonlyUserName:
26 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
28 SnmpdReadonlyUserPassword:
29 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
34 description: Set to true to enable package installation via Puppet
40 Setting to a previously unused value during stack-update will trigger
41 package update on all nodes
44 description: Mapping of service_name -> network name. Typically set
45 via parameter_defaults in the resource registry.
49 default: '' # Defaults to Heat created hostname
53 description: Optional mapping to override hostnames
57 Additional hiera configuration to inject into the cluster. Note
58 that ObjectStorageExtraConfig takes precedence over ExtraConfig.
60 ObjectStorageExtraConfig:
63 Role specific additional hiera configuration to inject into the cluster.
68 NetworkDeploymentActions:
69 type: comma_delimited_list
71 Heat action when to apply network configuration changes
73 SoftwareConfigTransport:
74 default: POLL_SERVER_CFN
76 How the server should receive the metadata required for software configuration.
79 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
84 The DNS domain used for the hosts. This should match the dhcp_domain
85 configured in the Undercloud neutron. Defaults to localdomain.
89 Extra properties or metadata passed to Nova for the created nodes in
90 the overcloud. It's accessible via the Nova metadata API.
92 ObjectStorageSchedulerHints:
94 description: Optional scheduler hints to pass to nova
99 ServiceConfigSettings:
103 type: comma_delimited_list
107 description: Command which will be run whenever configuration data changes
108 default: os-refresh-config --timeout 14400
113 type: OS::Nova::Server
116 command: {get_param: ConfigCommand}
118 image: {get_param: SwiftStorageImage}
119 flavor: {get_param: OvercloudSwiftStorageFlavor}
120 key_name: {get_param: KeyName}
123 user_data_format: SOFTWARE_CONFIG
124 user_data: {get_resource: UserData}
127 template: {get_param: Hostname}
128 params: {get_param: HostnameMap}
129 software_config_transport: {get_param: SoftwareConfigTransport}
130 metadata: {get_param: ServerMetadata}
131 scheduler_hints: {get_param: ObjectStorageSchedulerHints}
133 # Combine the NodeAdminUserData and NodeUserData mime archives
135 type: OS::Heat::MultipartMime
138 - config: {get_resource: NodeAdminUserData}
140 - config: {get_resource: NodeUserData}
143 # Creates the "heat-admin" user if configured via the environment
144 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
146 type: OS::TripleO::NodeAdminUserData
148 # For optional operator additional userdata
149 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
151 type: OS::TripleO::NodeUserData
154 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
156 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
157 IPPool: {get_param: SwiftStorageIPs}
158 NodeIndex: {get_param: NodeIndex}
161 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
163 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
164 IPPool: {get_param: SwiftStorageIPs}
165 NodeIndex: {get_param: NodeIndex}
168 type: OS::TripleO::SwiftStorage::Ports::StoragePort
170 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
171 IPPool: {get_param: SwiftStorageIPs}
172 NodeIndex: {get_param: NodeIndex}
175 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
177 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
178 IPPool: {get_param: SwiftStorageIPs}
179 NodeIndex: {get_param: NodeIndex}
182 type: OS::TripleO::SwiftStorage::Ports::TenantPort
184 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
185 IPPool: {get_param: SwiftStorageIPs}
186 NodeIndex: {get_param: NodeIndex}
189 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
191 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
192 IPPool: {get_param: SwiftStorageIPs}
193 NodeIndex: {get_param: NodeIndex}
196 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
198 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
199 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
200 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
201 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
202 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
203 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
204 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
207 type: OS::TripleO::Network::Ports::NetIpMap
209 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
210 ExternalIp: {get_attr: [ExternalPort, ip_address]}
211 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
212 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
213 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
214 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
215 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
216 StorageIp: {get_attr: [StoragePort, ip_address]}
217 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
218 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
219 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
220 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
221 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
222 TenantIp: {get_attr: [TenantPort, ip_address]}
223 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
224 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
225 ManagementIp: {get_attr: [ManagementPort, ip_address]}
226 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
227 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
230 type: OS::TripleO::SoftwareDeployment
232 name: NetworkDeployment
233 config: {get_resource: NetworkConfig}
234 server: {get_resource: SwiftStorage}
235 actions: {get_param: NetworkDeploymentActions}
237 SwiftStorageHieraConfig:
238 type: OS::Heat::StructuredConfig
240 group: os-apply-config
245 - heat_config_%{::deploy_config_name}
251 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
252 - all_nodes # provided by allNodesConfig
256 merge_behavior: deeper
260 service_names: {get_param: ServiceNames}
262 mapped_data: {get_param: ServiceConfigSettings}
264 raw_data: {get_file: hieradata/common.yaml}
267 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
268 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
269 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
271 mapped_data: {get_param: ObjectStorageExtraConfig}
273 mapped_data: {get_param: ExtraConfig}
275 raw_data: {get_file: hieradata/object.yaml}
276 mapped_data: # data supplied directly to this deployment configuration, etc
277 swift::swift_hash_path_suffix: { get_input: swift_hash_suffix }
278 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
279 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
280 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
281 tripleo::packages::enable_install: {get_input: enable_package_install}
282 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
285 SwiftStorageHieraDeploy:
286 type: OS::Heat::StructuredDeployment
287 depends_on: NetworkDeployment
289 name: SwiftStorageHieraDeploy
290 server: {get_resource: SwiftStorage}
291 config: {get_resource: SwiftStorageHieraConfig}
293 local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
294 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
295 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
296 swift_hash_suffix: {get_param: HashSuffix}
297 enable_package_install: {get_param: EnablePackageInstall}
298 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
299 swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
301 # Resource for site-specific injection of root certificate
303 depends_on: SwiftStorageHieraDeploy
304 type: OS::TripleO::NodeTLSCAData
306 server: {get_resource: SwiftStorage}
308 # Hook for site-specific additional pre-deployment config,
309 # applying to all nodes, e.g node registration/unregistration
311 depends_on: NodeTLSCAData
312 type: OS::TripleO::NodeExtraConfig
314 server: {get_resource: SwiftStorage}
317 type: OS::TripleO::Tasks::PackageUpdate
320 type: OS::Heat::SoftwareDeployment
322 config: {get_resource: UpdateConfig}
323 server: {get_resource: SwiftStorage}
326 get_param: UpdateIdentifier
330 description: IP address of the server in the ctlplane network
331 value: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
333 description: Hostname of the server
334 value: {get_attr: [SwiftStorage, name]}
339 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
340 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
341 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
342 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
343 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
344 TENANTIP TENANTHOST.DOMAIN TENANTHOST
345 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
347 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
348 DOMAIN: {get_param: CloudDomain}
349 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
350 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
354 - - {get_attr: [SwiftStorage, name]}
356 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
360 - - {get_attr: [SwiftStorage, name]}
362 STORAGEIP: {get_attr: [StoragePort, ip_address]}
366 - - {get_attr: [SwiftStorage, name]}
368 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
372 - - {get_attr: [SwiftStorage, name]}
374 TENANTIP: {get_attr: [TenantPort, ip_address]}
378 - - {get_attr: [SwiftStorage, name]}
380 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
384 - - {get_attr: [SwiftStorage, name]}
386 nova_server_resource:
387 description: Heat resource handle for the swift storage server
389 {get_resource: SwiftStorage}
391 description: Swift device formatted for swift-ring-builder
394 template: 'r1z1-IP:%PORT%/d1'
396 IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
398 description: IP address of the server in the external network
399 value: {get_attr: [ExternalPort, ip_address]}
400 internal_api_ip_address:
401 description: IP address of the server in the internal_api network
402 value: {get_attr: [InternalApiPort, ip_address]}
404 description: IP address of the server in the storage network
405 value: {get_attr: [StoragePort, ip_address]}
406 storage_mgmt_ip_address:
407 description: IP address of the server in the storage_mgmt network
408 value: {get_attr: [StorageMgmtPort, ip_address]}
410 description: IP address of the server in the tenant network
411 value: {get_attr: [TenantPort, ip_address]}
412 management_ip_address:
413 description: IP address of the server in the management network
414 value: {get_attr: [ManagementPort, ip_address]}