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
36 Setting to a previously unused value during stack-update will trigger
37 package update on all nodes
40 description: Mapping of service_name -> network name. Typically set
41 via parameter_defaults in the resource registry.
45 default: '' # Defaults to Heat created hostname
49 description: Optional mapping to override hostnames
53 Additional hiera configuration to inject into the cluster. Note
54 that ObjectStorageExtraConfig takes precedence over ExtraConfig.
56 ObjectStorageExtraConfig:
59 Role specific additional hiera configuration to inject into the cluster.
64 NetworkDeploymentActions:
65 type: comma_delimited_list
67 Heat action when to apply network configuration changes
69 SoftwareConfigTransport:
70 default: POLL_SERVER_CFN
72 How the server should receive the metadata required for software configuration.
75 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
79 The DNS domain used for the hosts. This should match the dhcp_domain
80 configured in the Undercloud neutron. Defaults to localdomain.
84 Extra properties or metadata passed to Nova for the created nodes in
85 the overcloud. It's accessible via the Nova metadata API.
87 ObjectStorageSchedulerHints:
89 description: Optional scheduler hints to pass to nova
94 ServiceConfigSettings:
98 type: comma_delimited_list
102 description: Command which will be run whenever configuration data changes
103 default: os-refresh-config --timeout 14400
108 type: OS::Nova::Server
111 command: {get_param: ConfigCommand}
113 image: {get_param: SwiftStorageImage}
114 flavor: {get_param: OvercloudSwiftStorageFlavor}
115 key_name: {get_param: KeyName}
118 user_data_format: SOFTWARE_CONFIG
119 user_data: {get_resource: UserData}
122 template: {get_param: Hostname}
123 params: {get_param: HostnameMap}
124 software_config_transport: {get_param: SoftwareConfigTransport}
125 metadata: {get_param: ServerMetadata}
126 scheduler_hints: {get_param: ObjectStorageSchedulerHints}
128 # Combine the NodeAdminUserData and NodeUserData mime archives
130 type: OS::Heat::MultipartMime
133 - config: {get_resource: NodeAdminUserData}
135 - config: {get_resource: NodeUserData}
138 # Creates the "heat-admin" user if configured via the environment
139 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
141 type: OS::TripleO::NodeAdminUserData
143 # For optional operator additional userdata
144 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
146 type: OS::TripleO::NodeUserData
149 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
151 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
152 IPPool: {get_param: SwiftStorageIPs}
153 NodeIndex: {get_param: NodeIndex}
156 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
158 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
159 IPPool: {get_param: SwiftStorageIPs}
160 NodeIndex: {get_param: NodeIndex}
163 type: OS::TripleO::SwiftStorage::Ports::StoragePort
165 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
166 IPPool: {get_param: SwiftStorageIPs}
167 NodeIndex: {get_param: NodeIndex}
170 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
172 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
173 IPPool: {get_param: SwiftStorageIPs}
174 NodeIndex: {get_param: NodeIndex}
177 type: OS::TripleO::SwiftStorage::Ports::TenantPort
179 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
180 IPPool: {get_param: SwiftStorageIPs}
181 NodeIndex: {get_param: NodeIndex}
184 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
186 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
187 IPPool: {get_param: SwiftStorageIPs}
188 NodeIndex: {get_param: NodeIndex}
191 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
193 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
194 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
195 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
196 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
197 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
198 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
199 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
202 type: OS::TripleO::Network::Ports::NetIpMap
204 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
205 ExternalIp: {get_attr: [ExternalPort, ip_address]}
206 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
207 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
208 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
209 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
210 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
211 StorageIp: {get_attr: [StoragePort, ip_address]}
212 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
213 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
214 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
215 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
216 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
217 TenantIp: {get_attr: [TenantPort, ip_address]}
218 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
219 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
220 ManagementIp: {get_attr: [ManagementPort, ip_address]}
221 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
222 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
225 type: OS::TripleO::SoftwareDeployment
227 name: NetworkDeployment
228 config: {get_resource: NetworkConfig}
229 server: {get_resource: SwiftStorage}
230 actions: {get_param: NetworkDeploymentActions}
232 SwiftStorageHieraConfig:
233 type: OS::Heat::StructuredConfig
235 group: os-apply-config
240 - heat_config_%{::deploy_config_name}
246 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
247 - all_nodes # provided by allNodesConfig
249 merge_behavior: deeper
253 service_names: {get_param: ServiceNames}
257 - {get_param: ServiceConfigSettings}
258 - values: {get_attr: [NetIpMap, net_ip_map]}
260 mapped_data: {get_param: ObjectStorageExtraConfig}
262 mapped_data: {get_param: ExtraConfig}
264 mapped_data: # data supplied directly to this deployment configuration, etc
265 swift::swift_hash_path_suffix: { get_input: swift_hash_suffix }
266 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
267 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
268 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
269 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
272 SwiftStorageHieraDeploy:
273 type: OS::Heat::StructuredDeployment
274 depends_on: NetworkDeployment
276 name: SwiftStorageHieraDeploy
277 server: {get_resource: SwiftStorage}
278 config: {get_resource: SwiftStorageHieraConfig}
280 local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
281 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
282 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
283 swift_hash_suffix: {get_param: HashSuffix}
284 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
285 swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
287 # Resource for site-specific injection of root certificate
289 depends_on: SwiftStorageHieraDeploy
290 type: OS::TripleO::NodeTLSCAData
292 server: {get_resource: SwiftStorage}
294 # Hook for site-specific additional pre-deployment config,
295 # applying to all nodes, e.g node registration/unregistration
297 depends_on: NodeTLSCAData
298 type: OS::TripleO::NodeExtraConfig
300 server: {get_resource: SwiftStorage}
303 type: OS::TripleO::Tasks::PackageUpdate
306 type: OS::Heat::SoftwareDeployment
308 config: {get_resource: UpdateConfig}
309 server: {get_resource: SwiftStorage}
312 get_param: UpdateIdentifier
316 description: IP address of the server in the ctlplane network
317 value: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
319 description: Hostname of the server
320 value: {get_attr: [SwiftStorage, name]}
325 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
326 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
327 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
328 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
329 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
330 TENANTIP TENANTHOST.DOMAIN TENANTHOST
331 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
333 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
334 DOMAIN: {get_param: CloudDomain}
335 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
336 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
340 - - {get_attr: [SwiftStorage, name]}
342 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
346 - - {get_attr: [SwiftStorage, name]}
348 STORAGEIP: {get_attr: [StoragePort, ip_address]}
352 - - {get_attr: [SwiftStorage, name]}
354 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
358 - - {get_attr: [SwiftStorage, name]}
360 TENANTIP: {get_attr: [TenantPort, ip_address]}
364 - - {get_attr: [SwiftStorage, name]}
366 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
370 - - {get_attr: [SwiftStorage, name]}
372 nova_server_resource:
373 description: Heat resource handle for the swift storage server
375 {get_resource: SwiftStorage}
377 description: Swift device formatted for swift-ring-builder
380 template: 'r1z1-IP:%PORT%/d1'
387 template: "NETWORK_uri"
389 NETWORK: {get_param: [ServiceNetMap, SwiftMgmtNetwork]}
391 description: IP address of the server in the external network
392 value: {get_attr: [ExternalPort, ip_address]}
393 internal_api_ip_address:
394 description: IP address of the server in the internal_api network
395 value: {get_attr: [InternalApiPort, ip_address]}
397 description: IP address of the server in the storage network
398 value: {get_attr: [StoragePort, ip_address]}
399 storage_mgmt_ip_address:
400 description: IP address of the server in the storage_mgmt network
401 value: {get_attr: [StorageMgmtPort, ip_address]}
403 description: IP address of the server in the tenant network
404 value: {get_attr: [TenantPort, ip_address]}
405 management_ip_address:
406 description: IP address of the server in the management network
407 value: {get_attr: [ManagementPort, ip_address]}