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 description: Mapping of service endpoint -> protocol. Typically set
33 via parameter_defaults in the resource registry.
37 default: '' # Defaults to Heat created hostname
41 description: Optional mapping to override hostnames
45 Additional hiera configuration to inject into the cluster. Note
46 that ObjectStorageExtraConfig takes precedence over ExtraConfig.
48 ObjectStorageExtraConfig:
51 Role specific additional hiera configuration to inject into the cluster.
56 NetworkDeploymentActions:
57 type: comma_delimited_list
59 Heat action when to apply network configuration changes
61 SoftwareConfigTransport:
62 default: POLL_SERVER_CFN
64 How the server should receive the metadata required for software configuration.
67 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
71 The DNS domain used for the hosts. This should match the dhcp_domain
72 configured in the Undercloud neutron. Defaults to localdomain.
76 Extra properties or metadata passed to Nova for the created nodes in
77 the overcloud. It's accessible via the Nova metadata API.
79 ObjectStorageSchedulerHints:
81 description: Optional scheduler hints to pass to nova
86 ServiceConfigSettings:
90 type: comma_delimited_list
92 MonitoringSubscriptions:
93 type: comma_delimited_list
97 description: Command which will be run whenever configuration data changes
98 default: os-refresh-config --timeout 14400
103 type: OS::Nova::Server
106 command: {get_param: ConfigCommand}
108 image: {get_param: SwiftStorageImage}
109 flavor: {get_param: OvercloudSwiftStorageFlavor}
110 key_name: {get_param: KeyName}
113 user_data_format: SOFTWARE_CONFIG
114 user_data: {get_resource: UserData}
117 template: {get_param: Hostname}
118 params: {get_param: HostnameMap}
119 software_config_transport: {get_param: SoftwareConfigTransport}
120 metadata: {get_param: ServerMetadata}
121 scheduler_hints: {get_param: ObjectStorageSchedulerHints}
123 # Combine the NodeAdminUserData and NodeUserData mime archives
125 type: OS::Heat::MultipartMime
128 - config: {get_resource: NodeAdminUserData}
130 - config: {get_resource: NodeUserData}
133 # Creates the "heat-admin" user if configured via the environment
134 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
136 type: OS::TripleO::NodeAdminUserData
138 # For optional operator additional userdata
139 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
141 type: OS::TripleO::NodeUserData
144 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
146 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
147 IPPool: {get_param: SwiftStorageIPs}
148 NodeIndex: {get_param: NodeIndex}
151 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
153 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
154 IPPool: {get_param: SwiftStorageIPs}
155 NodeIndex: {get_param: NodeIndex}
158 type: OS::TripleO::SwiftStorage::Ports::StoragePort
160 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
161 IPPool: {get_param: SwiftStorageIPs}
162 NodeIndex: {get_param: NodeIndex}
165 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
167 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
168 IPPool: {get_param: SwiftStorageIPs}
169 NodeIndex: {get_param: NodeIndex}
172 type: OS::TripleO::SwiftStorage::Ports::TenantPort
174 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
175 IPPool: {get_param: SwiftStorageIPs}
176 NodeIndex: {get_param: NodeIndex}
179 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
181 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
182 IPPool: {get_param: SwiftStorageIPs}
183 NodeIndex: {get_param: NodeIndex}
186 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
188 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
189 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
190 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
191 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
192 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
193 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
194 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
197 type: OS::TripleO::Network::Ports::NetIpMap
199 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
200 ExternalIp: {get_attr: [ExternalPort, ip_address]}
201 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
202 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
203 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
204 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
205 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
206 StorageIp: {get_attr: [StoragePort, ip_address]}
207 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
208 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
209 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
210 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
211 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
212 TenantIp: {get_attr: [TenantPort, ip_address]}
213 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
214 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
215 ManagementIp: {get_attr: [ManagementPort, ip_address]}
216 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
217 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
220 type: OS::TripleO::SoftwareDeployment
222 name: NetworkDeployment
223 config: {get_resource: NetworkConfig}
224 server: {get_resource: SwiftStorage}
225 actions: {get_param: NetworkDeploymentActions}
227 SwiftStorageHieraConfig:
228 type: OS::Heat::StructuredConfig
230 group: os-apply-config
235 - heat_config_%{::deploy_config_name}
241 - bootstrap_node # provided by allNodesConfig
242 - all_nodes # provided by allNodesConfig
243 - vip_data # provided by allNodesConfig
245 merge_behavior: deeper
249 service_names: {get_param: ServiceNames}
250 sensu::subscriptions: {get_param: MonitoringSubscriptions}
254 - {get_param: ServiceConfigSettings}
255 - values: {get_attr: [NetIpMap, net_ip_map]}
257 mapped_data: {get_param: ObjectStorageExtraConfig}
259 mapped_data: {get_param: ExtraConfig}
261 mapped_data: # data supplied directly to this deployment configuration, etc
262 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
265 SwiftStorageHieraDeploy:
266 type: OS::Heat::StructuredDeployment
267 depends_on: NetworkDeployment
269 name: SwiftStorageHieraDeploy
270 server: {get_resource: SwiftStorage}
271 config: {get_resource: SwiftStorageHieraConfig}
273 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
275 # Resource for site-specific injection of root certificate
277 depends_on: SwiftStorageHieraDeploy
278 type: OS::TripleO::NodeTLSCAData
280 server: {get_resource: SwiftStorage}
282 # Hook for site-specific additional pre-deployment config,
283 # applying to all nodes, e.g node registration/unregistration
285 depends_on: NodeTLSCAData
286 type: OS::TripleO::NodeExtraConfig
288 server: {get_resource: SwiftStorage}
291 type: OS::TripleO::Tasks::PackageUpdate
294 type: OS::Heat::SoftwareDeployment
296 config: {get_resource: UpdateConfig}
297 server: {get_resource: SwiftStorage}
300 get_param: UpdateIdentifier
304 description: IP address of the server in the ctlplane network
305 value: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
307 description: Hostname of the server
308 value: {get_attr: [SwiftStorage, name]}
310 description: Mapping of network names to hostnames
315 - - {get_attr: [SwiftStorage, name]}
317 - {get_param: CloudDomain}
321 - - {get_attr: [SwiftStorage, name]}
323 - {get_param: CloudDomain}
327 - - {get_attr: [SwiftStorage, name]}
329 - {get_param: CloudDomain}
333 - - {get_attr: [SwiftStorage, name]}
335 - {get_param: CloudDomain}
339 - - {get_attr: [SwiftStorage, name]}
341 - {get_param: CloudDomain}
345 - - {get_attr: [SwiftStorage, name]}
347 - {get_param: CloudDomain}
351 - - {get_attr: [SwiftStorage, name]}
353 - {get_param: CloudDomain}
358 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
359 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
360 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
361 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
362 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
363 TENANTIP TENANTHOST.DOMAIN TENANTHOST
364 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
365 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
367 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
368 DOMAIN: {get_param: CloudDomain}
369 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
370 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
374 - - {get_attr: [SwiftStorage, name]}
376 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
380 - - {get_attr: [SwiftStorage, name]}
382 STORAGEIP: {get_attr: [StoragePort, ip_address]}
386 - - {get_attr: [SwiftStorage, name]}
388 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
392 - - {get_attr: [SwiftStorage, name]}
394 TENANTIP: {get_attr: [TenantPort, ip_address]}
398 - - {get_attr: [SwiftStorage, name]}
400 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
404 - - {get_attr: [SwiftStorage, name]}
406 CTLPLANEIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
410 - - {get_attr: [SwiftStorage, name]}
412 nova_server_resource:
413 description: Heat resource handle for the swift storage server
415 {get_resource: SwiftStorage}
417 description: IP address of the server in the external network
418 value: {get_attr: [ExternalPort, ip_address]}
419 internal_api_ip_address:
420 description: IP address of the server in the internal_api network
421 value: {get_attr: [InternalApiPort, ip_address]}
423 description: IP address of the server in the storage network
424 value: {get_attr: [StoragePort, ip_address]}
425 storage_mgmt_ip_address:
426 description: IP address of the server in the storage_mgmt network
427 value: {get_attr: [StorageMgmtPort, ip_address]}
429 description: IP address of the server in the tenant network
430 value: {get_attr: [TenantPort, ip_address]}
431 management_ip_address:
432 description: IP address of the server in the management network
433 value: {get_attr: [ManagementPort, ip_address]}