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
98 type: OS::Nova::Server
101 command: {get_param: ConfigCommand}
103 image: {get_param: SwiftStorageImage}
104 flavor: {get_param: OvercloudSwiftStorageFlavor}
105 key_name: {get_param: KeyName}
108 user_data_format: SOFTWARE_CONFIG
109 user_data: {get_resource: UserData}
112 template: {get_param: Hostname}
113 params: {get_param: HostnameMap}
114 software_config_transport: {get_param: SoftwareConfigTransport}
115 metadata: {get_param: ServerMetadata}
116 scheduler_hints: {get_param: ObjectStorageSchedulerHints}
118 # Combine the NodeAdminUserData and NodeUserData mime archives
120 type: OS::Heat::MultipartMime
123 - config: {get_resource: NodeAdminUserData}
125 - config: {get_resource: NodeUserData}
128 # Creates the "heat-admin" user if configured via the environment
129 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
131 type: OS::TripleO::NodeAdminUserData
133 # For optional operator additional userdata
134 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
136 type: OS::TripleO::NodeUserData
139 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
141 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
142 IPPool: {get_param: SwiftStorageIPs}
143 NodeIndex: {get_param: NodeIndex}
146 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
148 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
149 IPPool: {get_param: SwiftStorageIPs}
150 NodeIndex: {get_param: NodeIndex}
153 type: OS::TripleO::SwiftStorage::Ports::StoragePort
155 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
156 IPPool: {get_param: SwiftStorageIPs}
157 NodeIndex: {get_param: NodeIndex}
160 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
162 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
163 IPPool: {get_param: SwiftStorageIPs}
164 NodeIndex: {get_param: NodeIndex}
167 type: OS::TripleO::SwiftStorage::Ports::TenantPort
169 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
170 IPPool: {get_param: SwiftStorageIPs}
171 NodeIndex: {get_param: NodeIndex}
174 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
176 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
177 IPPool: {get_param: SwiftStorageIPs}
178 NodeIndex: {get_param: NodeIndex}
181 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
183 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
184 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
185 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
186 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
187 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
188 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
189 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
192 type: OS::TripleO::Network::Ports::NetIpMap
194 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
195 ExternalIp: {get_attr: [ExternalPort, ip_address]}
196 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
197 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
198 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
199 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
200 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
201 StorageIp: {get_attr: [StoragePort, ip_address]}
202 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
203 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
204 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
205 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
206 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
207 TenantIp: {get_attr: [TenantPort, ip_address]}
208 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
209 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
210 ManagementIp: {get_attr: [ManagementPort, ip_address]}
211 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
212 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
215 type: OS::TripleO::SoftwareDeployment
217 name: NetworkDeployment
218 config: {get_resource: NetworkConfig}
219 server: {get_resource: SwiftStorage}
220 actions: {get_param: NetworkDeploymentActions}
222 SwiftStorageHieraConfig:
223 type: OS::Heat::StructuredConfig
225 group: os-apply-config
230 - heat_config_%{::deploy_config_name}
236 - bootstrap_node # provided by allNodesConfig
237 - all_nodes # provided by allNodesConfig
238 - vip_data # provided by allNodesConfig
240 merge_behavior: deeper
244 service_names: {get_param: ServiceNames}
245 sensu::subscriptions: {get_param: MonitoringSubscriptions}
249 - {get_param: ServiceConfigSettings}
250 - values: {get_attr: [NetIpMap, net_ip_map]}
252 mapped_data: {get_param: ObjectStorageExtraConfig}
254 mapped_data: {get_param: ExtraConfig}
256 mapped_data: # data supplied directly to this deployment configuration, etc
257 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
260 SwiftStorageHieraDeploy:
261 type: OS::Heat::StructuredDeployment
262 depends_on: NetworkDeployment
264 name: SwiftStorageHieraDeploy
265 server: {get_resource: SwiftStorage}
266 config: {get_resource: SwiftStorageHieraConfig}
268 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
270 # Resource for site-specific injection of root certificate
272 depends_on: SwiftStorageHieraDeploy
273 type: OS::TripleO::NodeTLSCAData
275 server: {get_resource: SwiftStorage}
277 # Hook for site-specific additional pre-deployment config,
278 # applying to all nodes, e.g node registration/unregistration
280 depends_on: NodeTLSCAData
281 type: OS::TripleO::NodeExtraConfig
283 server: {get_resource: SwiftStorage}
286 type: OS::TripleO::Tasks::PackageUpdate
289 type: OS::Heat::SoftwareDeployment
291 config: {get_resource: UpdateConfig}
292 server: {get_resource: SwiftStorage}
295 get_param: UpdateIdentifier
299 description: IP address of the server in the ctlplane network
300 value: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
302 description: Hostname of the server
303 value: {get_attr: [SwiftStorage, name]}
308 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
309 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
310 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
311 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
312 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
313 TENANTIP TENANTHOST.DOMAIN TENANTHOST
314 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
315 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
317 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
318 DOMAIN: {get_param: CloudDomain}
319 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
320 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
324 - - {get_attr: [SwiftStorage, name]}
326 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
330 - - {get_attr: [SwiftStorage, name]}
332 STORAGEIP: {get_attr: [StoragePort, ip_address]}
336 - - {get_attr: [SwiftStorage, name]}
338 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
342 - - {get_attr: [SwiftStorage, name]}
344 TENANTIP: {get_attr: [TenantPort, ip_address]}
348 - - {get_attr: [SwiftStorage, name]}
350 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
354 - - {get_attr: [SwiftStorage, name]}
356 CTLPLANEIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
360 - - {get_attr: [SwiftStorage, name]}
362 nova_server_resource:
363 description: Heat resource handle for the swift storage server
365 {get_resource: SwiftStorage}
367 description: IP address of the server in the external network
368 value: {get_attr: [ExternalPort, ip_address]}
369 internal_api_ip_address:
370 description: IP address of the server in the internal_api network
371 value: {get_attr: [InternalApiPort, ip_address]}
373 description: IP address of the server in the storage network
374 value: {get_attr: [StoragePort, ip_address]}
375 storage_mgmt_ip_address:
376 description: IP address of the server in the storage_mgmt network
377 value: {get_attr: [StorageMgmtPort, ip_address]}
379 description: IP address of the server in the tenant network
380 value: {get_attr: [TenantPort, ip_address]}
381 management_ip_address:
382 description: IP address of the server in the management network
383 value: {get_attr: [ManagementPort, ip_address]}