1 heat_template_version: 2016-10-14
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]
83 The DNS domain used for the hosts. This should match the dhcp_domain
84 configured in the Undercloud neutron. Defaults to localdomain.
88 Extra properties or metadata passed to Nova for the created nodes in
89 the overcloud. It's accessible via the Nova metadata API.
91 ObjectStorageSchedulerHints:
93 description: Optional scheduler hints to pass to nova
98 ServiceConfigSettings:
102 type: comma_delimited_list
106 description: Command which will be run whenever configuration data changes
107 default: os-refresh-config --timeout 14400
112 type: OS::Nova::Server
115 command: {get_param: ConfigCommand}
117 image: {get_param: SwiftStorageImage}
118 flavor: {get_param: OvercloudSwiftStorageFlavor}
119 key_name: {get_param: KeyName}
122 user_data_format: SOFTWARE_CONFIG
123 user_data: {get_resource: UserData}
126 template: {get_param: Hostname}
127 params: {get_param: HostnameMap}
128 software_config_transport: {get_param: SoftwareConfigTransport}
129 metadata: {get_param: ServerMetadata}
130 scheduler_hints: {get_param: ObjectStorageSchedulerHints}
132 # Combine the NodeAdminUserData and NodeUserData mime archives
134 type: OS::Heat::MultipartMime
137 - config: {get_resource: NodeAdminUserData}
139 - config: {get_resource: NodeUserData}
142 # Creates the "heat-admin" user if configured via the environment
143 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
145 type: OS::TripleO::NodeAdminUserData
147 # For optional operator additional userdata
148 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
150 type: OS::TripleO::NodeUserData
153 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
155 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
156 IPPool: {get_param: SwiftStorageIPs}
157 NodeIndex: {get_param: NodeIndex}
160 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
162 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
163 IPPool: {get_param: SwiftStorageIPs}
164 NodeIndex: {get_param: NodeIndex}
167 type: OS::TripleO::SwiftStorage::Ports::StoragePort
169 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
170 IPPool: {get_param: SwiftStorageIPs}
171 NodeIndex: {get_param: NodeIndex}
174 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
176 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
177 IPPool: {get_param: SwiftStorageIPs}
178 NodeIndex: {get_param: NodeIndex}
181 type: OS::TripleO::SwiftStorage::Ports::TenantPort
183 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
184 IPPool: {get_param: SwiftStorageIPs}
185 NodeIndex: {get_param: NodeIndex}
188 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
190 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
191 IPPool: {get_param: SwiftStorageIPs}
192 NodeIndex: {get_param: NodeIndex}
195 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
197 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
198 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
199 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
200 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
201 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
202 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
203 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
206 type: OS::TripleO::Network::Ports::NetIpMap
208 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
209 ExternalIp: {get_attr: [ExternalPort, ip_address]}
210 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
211 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
212 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
213 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
214 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
215 StorageIp: {get_attr: [StoragePort, ip_address]}
216 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
217 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
218 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
219 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
220 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
221 TenantIp: {get_attr: [TenantPort, ip_address]}
222 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
223 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
224 ManagementIp: {get_attr: [ManagementPort, ip_address]}
225 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
226 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
229 type: OS::TripleO::SoftwareDeployment
231 name: NetworkDeployment
232 config: {get_resource: NetworkConfig}
233 server: {get_resource: SwiftStorage}
234 actions: {get_param: NetworkDeploymentActions}
236 SwiftStorageHieraConfig:
237 type: OS::Heat::StructuredConfig
239 group: os-apply-config
244 - heat_config_%{::deploy_config_name}
250 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
251 - all_nodes # provided by allNodesConfig
254 merge_behavior: deeper
258 service_names: {get_param: ServiceNames}
262 - {get_param: ServiceConfigSettings}
263 - values: {get_attr: [NetIpMap, net_ip_map]}
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 mapped_data: # data supplied directly to this deployment configuration, etc
275 swift::swift_hash_path_suffix: { get_input: swift_hash_suffix }
276 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
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 enable_package_install: {get_param: EnablePackageInstall}
296 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
297 swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
299 # Resource for site-specific injection of root certificate
301 depends_on: SwiftStorageHieraDeploy
302 type: OS::TripleO::NodeTLSCAData
304 server: {get_resource: SwiftStorage}
306 # Hook for site-specific additional pre-deployment config,
307 # applying to all nodes, e.g node registration/unregistration
309 depends_on: NodeTLSCAData
310 type: OS::TripleO::NodeExtraConfig
312 server: {get_resource: SwiftStorage}
315 type: OS::TripleO::Tasks::PackageUpdate
318 type: OS::Heat::SoftwareDeployment
320 config: {get_resource: UpdateConfig}
321 server: {get_resource: SwiftStorage}
324 get_param: UpdateIdentifier
328 description: IP address of the server in the ctlplane network
329 value: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
331 description: Hostname of the server
332 value: {get_attr: [SwiftStorage, name]}
337 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
338 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
339 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
340 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
341 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
342 TENANTIP TENANTHOST.DOMAIN TENANTHOST
343 MANAGEMENTIP MANAGEMENTHOST.DOMAIN 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]}