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
87 MonitoringSubscriptions:
88 type: comma_delimited_list
92 description: Command which will be run whenever configuration data changes
93 default: os-refresh-config --timeout 14400
96 description: 'A hash of additional raw devices to use as Swift backend (eg. {sdb: {}})'
102 type: OS::Nova::Server
105 command: {get_param: ConfigCommand}
107 image: {get_param: SwiftStorageImage}
108 flavor: {get_param: OvercloudSwiftStorageFlavor}
109 key_name: {get_param: KeyName}
112 user_data_format: SOFTWARE_CONFIG
113 user_data: {get_resource: UserData}
116 template: {get_param: Hostname}
117 params: {get_param: HostnameMap}
118 software_config_transport: {get_param: SoftwareConfigTransport}
119 metadata: {get_param: ServerMetadata}
120 scheduler_hints: {get_param: ObjectStorageSchedulerHints}
122 # Combine the NodeAdminUserData and NodeUserData mime archives
124 type: OS::Heat::MultipartMime
127 - config: {get_resource: NodeAdminUserData}
129 - config: {get_resource: NodeUserData}
132 # Creates the "heat-admin" user if configured via the environment
133 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
135 type: OS::TripleO::NodeAdminUserData
137 # For optional operator additional userdata
138 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
140 type: OS::TripleO::NodeUserData
143 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
145 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
146 IPPool: {get_param: SwiftStorageIPs}
147 NodeIndex: {get_param: NodeIndex}
150 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
152 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
153 IPPool: {get_param: SwiftStorageIPs}
154 NodeIndex: {get_param: NodeIndex}
157 type: OS::TripleO::SwiftStorage::Ports::StoragePort
159 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
160 IPPool: {get_param: SwiftStorageIPs}
161 NodeIndex: {get_param: NodeIndex}
164 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
166 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
167 IPPool: {get_param: SwiftStorageIPs}
168 NodeIndex: {get_param: NodeIndex}
171 type: OS::TripleO::SwiftStorage::Ports::TenantPort
173 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
174 IPPool: {get_param: SwiftStorageIPs}
175 NodeIndex: {get_param: NodeIndex}
178 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
180 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
181 IPPool: {get_param: SwiftStorageIPs}
182 NodeIndex: {get_param: NodeIndex}
185 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
187 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
188 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
189 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
190 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
191 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
192 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
193 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
196 type: OS::TripleO::Network::Ports::NetIpMap
198 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
199 ExternalIp: {get_attr: [ExternalPort, ip_address]}
200 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
201 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
202 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
203 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
204 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
205 StorageIp: {get_attr: [StoragePort, ip_address]}
206 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
207 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
208 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
209 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
210 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
211 TenantIp: {get_attr: [TenantPort, ip_address]}
212 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
213 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
214 ManagementIp: {get_attr: [ManagementPort, ip_address]}
215 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
216 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
219 type: OS::TripleO::SoftwareDeployment
221 name: NetworkDeployment
222 config: {get_resource: NetworkConfig}
223 server: {get_resource: SwiftStorage}
224 actions: {get_param: NetworkDeploymentActions}
226 SwiftStorageHieraConfig:
227 type: OS::Heat::StructuredConfig
229 group: os-apply-config
234 - heat_config_%{::deploy_config_name}
240 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
241 - all_nodes # provided by allNodesConfig
243 merge_behavior: deeper
247 service_names: {get_param: ServiceNames}
248 sensu::subscriptions: {get_param: MonitoringSubscriptions}
252 - {get_param: ServiceConfigSettings}
253 - values: {get_attr: [NetIpMap, net_ip_map]}
255 mapped_data: {get_param: ObjectStorageExtraConfig}
257 mapped_data: {get_param: ExtraConfig}
259 mapped_data: # data supplied directly to this deployment configuration, etc
260 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
263 SwiftStorageHieraDeploy:
264 type: OS::Heat::StructuredDeployment
265 depends_on: NetworkDeployment
267 name: SwiftStorageHieraDeploy
268 server: {get_resource: SwiftStorage}
269 config: {get_resource: SwiftStorageHieraConfig}
271 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
273 # Resource for site-specific injection of root certificate
275 depends_on: SwiftStorageHieraDeploy
276 type: OS::TripleO::NodeTLSCAData
278 server: {get_resource: SwiftStorage}
280 # Hook for site-specific additional pre-deployment config,
281 # applying to all nodes, e.g node registration/unregistration
283 depends_on: NodeTLSCAData
284 type: OS::TripleO::NodeExtraConfig
286 server: {get_resource: SwiftStorage}
289 type: OS::TripleO::Tasks::PackageUpdate
292 type: OS::Heat::SoftwareDeployment
294 config: {get_resource: UpdateConfig}
295 server: {get_resource: SwiftStorage}
298 get_param: UpdateIdentifier
302 description: IP address of the server in the ctlplane network
303 value: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
305 description: Hostname of the server
306 value: {get_attr: [SwiftStorage, name]}
311 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
312 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
313 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
314 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
315 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
316 TENANTIP TENANTHOST.DOMAIN TENANTHOST
317 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
319 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
320 DOMAIN: {get_param: CloudDomain}
321 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
322 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
326 - - {get_attr: [SwiftStorage, name]}
328 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
332 - - {get_attr: [SwiftStorage, name]}
334 STORAGEIP: {get_attr: [StoragePort, ip_address]}
338 - - {get_attr: [SwiftStorage, name]}
340 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
344 - - {get_attr: [SwiftStorage, name]}
346 TENANTIP: {get_attr: [TenantPort, ip_address]}
350 - - {get_attr: [SwiftStorage, name]}
352 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
356 - - {get_attr: [SwiftStorage, name]}
358 nova_server_resource:
359 description: Heat resource handle for the swift storage server
361 {get_resource: SwiftStorage}
363 description: Swift device formatted for swift-ring-builder
369 - ['r1z1-IP:%PORT%/d1']
371 template: 'r1z1-IP:%PORT%/DEVICE'
373 DEVICE: {get_param: SwiftRawDisks}
380 template: "NETWORK_uri"
382 NETWORK: {get_param: [ServiceNetMap, SwiftMgmtNetwork]}
384 description: IP address of the server in the external network
385 value: {get_attr: [ExternalPort, ip_address]}
386 internal_api_ip_address:
387 description: IP address of the server in the internal_api network
388 value: {get_attr: [InternalApiPort, ip_address]}
390 description: IP address of the server in the storage network
391 value: {get_attr: [StoragePort, ip_address]}
392 storage_mgmt_ip_address:
393 description: IP address of the server in the storage_mgmt network
394 value: {get_attr: [StorageMgmtPort, ip_address]}
396 description: IP address of the server in the tenant network
397 value: {get_attr: [TenantPort, ip_address]}
398 management_ip_address:
399 description: IP address of the server in the management network
400 value: {get_attr: [ManagementPort, ip_address]}