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 - 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]}
313 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
314 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
315 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
316 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
317 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
318 TENANTIP TENANTHOST.DOMAIN TENANTHOST
319 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
321 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
322 DOMAIN: {get_param: CloudDomain}
323 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
324 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
328 - - {get_attr: [SwiftStorage, name]}
330 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
334 - - {get_attr: [SwiftStorage, name]}
336 STORAGEIP: {get_attr: [StoragePort, ip_address]}
340 - - {get_attr: [SwiftStorage, name]}
342 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
346 - - {get_attr: [SwiftStorage, name]}
348 TENANTIP: {get_attr: [TenantPort, ip_address]}
352 - - {get_attr: [SwiftStorage, name]}
354 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
358 - - {get_attr: [SwiftStorage, name]}
360 nova_server_resource:
361 description: Heat resource handle for the swift storage server
363 {get_resource: SwiftStorage}
365 description: Swift device formatted for swift-ring-builder
371 - ['r1z1-IP:%PORT%/d1']
373 template: 'r1z1-IP:%PORT%/DEVICE'
375 DEVICE: {get_param: SwiftRawDisks}
382 template: "NETWORK_uri"
384 NETWORK: {get_param: [ServiceNetMap, SwiftMgmtNetwork]}
386 description: IP address of the server in the external network
387 value: {get_attr: [ExternalPort, ip_address]}
388 internal_api_ip_address:
389 description: IP address of the server in the internal_api network
390 value: {get_attr: [InternalApiPort, ip_address]}
392 description: IP address of the server in the storage network
393 value: {get_attr: [StoragePort, ip_address]}
394 storage_mgmt_ip_address:
395 description: IP address of the server in the storage_mgmt network
396 value: {get_attr: [StorageMgmtPort, ip_address]}
398 description: IP address of the server in the tenant network
399 value: {get_attr: [TenantPort, ip_address]}
400 management_ip_address:
401 description: IP address of the server in the management network
402 value: {get_attr: [ManagementPort, ip_address]}