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 default: overcloud-full
14 - custom_constraint: glance.image
17 description: Name of an existing Nova key pair to enable SSH access to the instances
23 Setting to a previously unused value during stack-update will trigger
24 package update on all nodes
27 description: Mapping of service_name -> network name. Typically set
28 via parameter_defaults in the resource registry.
32 default: '' # Defaults to Heat created hostname
36 description: Optional mapping to override hostnames
40 Additional hiera configuration to inject into the cluster. Note
41 that ObjectStorageExtraConfig takes precedence over ExtraConfig.
43 ObjectStorageExtraConfig:
46 Role specific additional hiera configuration to inject into the cluster.
51 NetworkDeploymentActions:
52 type: comma_delimited_list
54 Heat action when to apply network configuration changes
56 SoftwareConfigTransport:
57 default: POLL_SERVER_CFN
59 How the server should receive the metadata required for software configuration.
62 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
66 The DNS domain used for the hosts. This should match the dhcp_domain
67 configured in the Undercloud neutron. Defaults to localdomain.
71 Extra properties or metadata passed to Nova for the created nodes in
72 the overcloud. It's accessible via the Nova metadata API.
74 ObjectStorageSchedulerHints:
76 description: Optional scheduler hints to pass to nova
81 ServiceConfigSettings:
85 type: comma_delimited_list
89 description: Command which will be run whenever configuration data changes
90 default: os-refresh-config --timeout 14400
93 description: 'A hash of additional raw devices to use as Swift backend (eg. {sdb: {}})'
99 type: OS::Nova::Server
102 command: {get_param: ConfigCommand}
104 image: {get_param: SwiftStorageImage}
105 flavor: {get_param: OvercloudSwiftStorageFlavor}
106 key_name: {get_param: KeyName}
109 user_data_format: SOFTWARE_CONFIG
110 user_data: {get_resource: UserData}
113 template: {get_param: Hostname}
114 params: {get_param: HostnameMap}
115 software_config_transport: {get_param: SoftwareConfigTransport}
116 metadata: {get_param: ServerMetadata}
117 scheduler_hints: {get_param: ObjectStorageSchedulerHints}
119 # Combine the NodeAdminUserData and NodeUserData mime archives
121 type: OS::Heat::MultipartMime
124 - config: {get_resource: NodeAdminUserData}
126 - config: {get_resource: NodeUserData}
129 # Creates the "heat-admin" user if configured via the environment
130 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
132 type: OS::TripleO::NodeAdminUserData
134 # For optional operator additional userdata
135 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
137 type: OS::TripleO::NodeUserData
140 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
142 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
143 IPPool: {get_param: SwiftStorageIPs}
144 NodeIndex: {get_param: NodeIndex}
147 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
149 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
150 IPPool: {get_param: SwiftStorageIPs}
151 NodeIndex: {get_param: NodeIndex}
154 type: OS::TripleO::SwiftStorage::Ports::StoragePort
156 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
157 IPPool: {get_param: SwiftStorageIPs}
158 NodeIndex: {get_param: NodeIndex}
161 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
163 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
164 IPPool: {get_param: SwiftStorageIPs}
165 NodeIndex: {get_param: NodeIndex}
168 type: OS::TripleO::SwiftStorage::Ports::TenantPort
170 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
171 IPPool: {get_param: SwiftStorageIPs}
172 NodeIndex: {get_param: NodeIndex}
175 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
177 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
178 IPPool: {get_param: SwiftStorageIPs}
179 NodeIndex: {get_param: NodeIndex}
182 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
184 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
185 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
186 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
187 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
188 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
189 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
190 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
193 type: OS::TripleO::Network::Ports::NetIpMap
195 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
196 ExternalIp: {get_attr: [ExternalPort, ip_address]}
197 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
198 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
199 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
200 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
201 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
202 StorageIp: {get_attr: [StoragePort, ip_address]}
203 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
204 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
205 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
206 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
207 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
208 TenantIp: {get_attr: [TenantPort, ip_address]}
209 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
210 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
211 ManagementIp: {get_attr: [ManagementPort, ip_address]}
212 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
213 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
216 type: OS::TripleO::SoftwareDeployment
218 name: NetworkDeployment
219 config: {get_resource: NetworkConfig}
220 server: {get_resource: SwiftStorage}
221 actions: {get_param: NetworkDeploymentActions}
223 SwiftStorageHieraConfig:
224 type: OS::Heat::StructuredConfig
226 group: os-apply-config
231 - heat_config_%{::deploy_config_name}
237 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
238 - all_nodes # provided by allNodesConfig
240 merge_behavior: deeper
244 service_names: {get_param: ServiceNames}
248 - {get_param: ServiceConfigSettings}
249 - values: {get_attr: [NetIpMap, net_ip_map]}
251 mapped_data: {get_param: ObjectStorageExtraConfig}
253 mapped_data: {get_param: ExtraConfig}
255 mapped_data: # data supplied directly to this deployment configuration, etc
256 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
259 SwiftStorageHieraDeploy:
260 type: OS::Heat::StructuredDeployment
261 depends_on: NetworkDeployment
263 name: SwiftStorageHieraDeploy
264 server: {get_resource: SwiftStorage}
265 config: {get_resource: SwiftStorageHieraConfig}
267 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
269 # Resource for site-specific injection of root certificate
271 depends_on: SwiftStorageHieraDeploy
272 type: OS::TripleO::NodeTLSCAData
274 server: {get_resource: SwiftStorage}
276 # Hook for site-specific additional pre-deployment config,
277 # applying to all nodes, e.g node registration/unregistration
279 depends_on: NodeTLSCAData
280 type: OS::TripleO::NodeExtraConfig
282 server: {get_resource: SwiftStorage}
285 type: OS::TripleO::Tasks::PackageUpdate
288 type: OS::Heat::SoftwareDeployment
290 config: {get_resource: UpdateConfig}
291 server: {get_resource: SwiftStorage}
294 get_param: UpdateIdentifier
298 description: IP address of the server in the ctlplane network
299 value: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
301 description: Hostname of the server
302 value: {get_attr: [SwiftStorage, name]}
307 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
308 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
309 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
310 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
311 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
312 TENANTIP TENANTHOST.DOMAIN TENANTHOST
313 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
315 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
316 DOMAIN: {get_param: CloudDomain}
317 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
318 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
322 - - {get_attr: [SwiftStorage, name]}
324 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
328 - - {get_attr: [SwiftStorage, name]}
330 STORAGEIP: {get_attr: [StoragePort, ip_address]}
334 - - {get_attr: [SwiftStorage, name]}
336 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
340 - - {get_attr: [SwiftStorage, name]}
342 TENANTIP: {get_attr: [TenantPort, ip_address]}
346 - - {get_attr: [SwiftStorage, name]}
348 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
352 - - {get_attr: [SwiftStorage, name]}
354 nova_server_resource:
355 description: Heat resource handle for the swift storage server
357 {get_resource: SwiftStorage}
359 description: Swift device formatted for swift-ring-builder
365 - ['r1z1-IP:%PORT%/d1']
367 template: 'r1z1-IP:%PORT%/DEVICE'
369 DEVICE: {get_param: SwiftRawDisks}
376 template: "NETWORK_uri"
378 NETWORK: {get_param: [ServiceNetMap, SwiftMgmtNetwork]}
380 description: IP address of the server in the external network
381 value: {get_attr: [ExternalPort, ip_address]}
382 internal_api_ip_address:
383 description: IP address of the server in the internal_api network
384 value: {get_attr: [InternalApiPort, ip_address]}
386 description: IP address of the server in the storage network
387 value: {get_attr: [StoragePort, ip_address]}
388 storage_mgmt_ip_address:
389 description: IP address of the server in the storage_mgmt network
390 value: {get_attr: [StorageMgmtPort, ip_address]}
392 description: IP address of the server in the tenant network
393 value: {get_attr: [TenantPort, ip_address]}
394 management_ip_address:
395 description: IP address of the server in the management network
396 value: {get_attr: [ManagementPort, ip_address]}