1 heat_template_version: 2015-04-30
2 description: 'OpenStack swift storage node configured by Puppet'
5 description: Flavor for Swift storage nodes to request when deploying.
8 - custom_constraint: nova.flavor
10 description: A random string to be used as a salt when hashing to determine mappings
15 default: overcloud-swift-storage
19 description: Name of an existing Nova key pair to enable SSH access to the instances
21 SnmpdReadonlyUserName:
23 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
25 SnmpdReadonlyUserPassword:
26 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
31 description: Set to true to enable package installation via Puppet
37 Setting to a previously unused value during stack-update will trigger
38 package update on all nodes
41 description: Mapping of service_name -> network name. Typically set
42 via parameter_defaults in the resource registry.
46 default: '' # Defaults to Heat created hostname
50 description: Optional mapping to override hostnames
54 Additional hiera configuration to inject into the cluster. Note
55 that ObjectStorageExtraConfig takes precedence over ExtraConfig.
57 ObjectStorageExtraConfig:
60 Role specific additional hiera configuration to inject into the cluster.
65 NetworkDeploymentActions:
66 type: comma_delimited_list
68 Heat action when to apply network configuration changes
70 SoftwareConfigTransport:
71 default: POLL_SERVER_CFN
73 How the server should receive the metadata required for software configuration.
76 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
81 The DNS domain used for the hosts. This should match the dhcp_domain
82 configured in the Undercloud neutron. Defaults to localdomain.
86 Extra properties or metadata passed to Nova for the created nodes in
87 the overcloud. It's accessible via the Nova metadata API.
91 description: Optional scheduler hints to pass to nova
96 ServiceConfigSettings:
100 type: comma_delimited_list
104 description: Command which will be run whenever configuration data changes
105 default: os-refresh-config --timeout 14400
110 type: OS::Nova::Server
113 command: {get_param: ConfigCommand}
115 image: {get_param: Image}
116 flavor: {get_param: Flavor}
117 key_name: {get_param: KeyName}
120 user_data_format: SOFTWARE_CONFIG
121 user_data: {get_resource: UserData}
124 template: {get_param: Hostname}
125 params: {get_param: HostnameMap}
126 software_config_transport: {get_param: SoftwareConfigTransport}
127 metadata: {get_param: ServerMetadata}
128 scheduler_hints: {get_param: SchedulerHints}
130 # Combine the NodeAdminUserData and NodeUserData mime archives
132 type: OS::Heat::MultipartMime
135 - config: {get_resource: NodeAdminUserData}
137 - config: {get_resource: NodeUserData}
140 # Creates the "heat-admin" user if configured via the environment
141 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
143 type: OS::TripleO::NodeAdminUserData
145 # For optional operator additional userdata
146 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
148 type: OS::TripleO::NodeUserData
151 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
153 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
154 IPPool: {get_param: SwiftStorageIPs}
155 NodeIndex: {get_param: NodeIndex}
158 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
160 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
161 IPPool: {get_param: SwiftStorageIPs}
162 NodeIndex: {get_param: NodeIndex}
165 type: OS::TripleO::SwiftStorage::Ports::StoragePort
167 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
168 IPPool: {get_param: SwiftStorageIPs}
169 NodeIndex: {get_param: NodeIndex}
172 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
174 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
175 IPPool: {get_param: SwiftStorageIPs}
176 NodeIndex: {get_param: NodeIndex}
179 type: OS::TripleO::SwiftStorage::Ports::TenantPort
181 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
182 IPPool: {get_param: SwiftStorageIPs}
183 NodeIndex: {get_param: NodeIndex}
186 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
188 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
189 IPPool: {get_param: SwiftStorageIPs}
190 NodeIndex: {get_param: NodeIndex}
193 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
195 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
196 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
197 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
198 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
199 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
200 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
201 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
204 type: OS::TripleO::Network::Ports::NetIpMap
206 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
207 ExternalIp: {get_attr: [ExternalPort, ip_address]}
208 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
209 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
210 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
211 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
212 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
213 StorageIp: {get_attr: [StoragePort, ip_address]}
214 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
215 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
216 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
217 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
218 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
219 TenantIp: {get_attr: [TenantPort, ip_address]}
220 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
221 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
222 ManagementIp: {get_attr: [ManagementPort, ip_address]}
223 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
224 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
227 type: OS::TripleO::SoftwareDeployment
229 name: NetworkDeployment
230 config: {get_resource: NetworkConfig}
231 server: {get_resource: SwiftStorage}
232 actions: {get_param: NetworkDeploymentActions}
234 SwiftStorageHieraConfig:
235 type: OS::Heat::StructuredConfig
237 group: os-apply-config
242 - heat_config_%{::deploy_config_name}
248 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
249 - all_nodes # provided by allNodesConfig
253 merge_behavior: deeper
257 service_names: {get_param: ServiceNames}
259 mapped_data: {get_param: ServiceConfigSettings}
261 raw_data: {get_file: hieradata/common.yaml}
264 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
265 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
266 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
268 mapped_data: {get_param: ObjectStorageExtraConfig}
270 mapped_data: {get_param: ExtraConfig}
272 raw_data: {get_file: hieradata/object.yaml}
273 mapped_data: # data supplied directly to this deployment configuration, etc
274 swift::swift_hash_path_suffix: { get_input: swift_hash_suffix }
275 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
276 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
277 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
278 tripleo::packages::enable_install: {get_input: enable_package_install}
279 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
282 SwiftStorageHieraDeploy:
283 type: OS::Heat::StructuredDeployment
284 depends_on: NetworkDeployment
286 name: SwiftStorageHieraDeploy
287 server: {get_resource: SwiftStorage}
288 config: {get_resource: SwiftStorageHieraConfig}
290 local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
291 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
292 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
293 swift_hash_suffix: {get_param: HashSuffix}
294 enable_package_install: {get_param: EnablePackageInstall}
295 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
296 swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
298 # Resource for site-specific injection of root certificate
300 depends_on: SwiftStorageHieraDeploy
301 type: OS::TripleO::NodeTLSCAData
303 server: {get_resource: SwiftStorage}
305 # Hook for site-specific additional pre-deployment config,
306 # applying to all nodes, e.g node registration/unregistration
308 depends_on: NodeTLSCAData
309 type: OS::TripleO::NodeExtraConfig
311 server: {get_resource: SwiftStorage}
314 type: OS::TripleO::Tasks::PackageUpdate
317 type: OS::Heat::SoftwareDeployment
319 config: {get_resource: UpdateConfig}
320 server: {get_resource: SwiftStorage}
323 get_param: UpdateIdentifier
327 description: IP address of the server in the ctlplane network
328 value: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
330 description: Hostname of the server
331 value: {get_attr: [SwiftStorage, name]}
336 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
337 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
338 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
339 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
340 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
341 TENANTIP TENANTHOST.DOMAIN TENANTHOST
342 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
344 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
345 DOMAIN: {get_param: CloudDomain}
346 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
347 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
351 - - {get_attr: [SwiftStorage, name]}
353 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
357 - - {get_attr: [SwiftStorage, name]}
359 STORAGEIP: {get_attr: [StoragePort, ip_address]}
363 - - {get_attr: [SwiftStorage, name]}
365 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
369 - - {get_attr: [SwiftStorage, name]}
371 TENANTIP: {get_attr: [TenantPort, ip_address]}
375 - - {get_attr: [SwiftStorage, name]}
377 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
381 - - {get_attr: [SwiftStorage, name]}
383 nova_server_resource:
384 description: Heat resource handle for the swift storage server
386 {get_resource: SwiftStorage}
388 description: Swift device formatted for swift-ring-builder
391 template: 'r1z1-IP:%PORT%/d1'
393 IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
395 description: IP address of the server in the external network
396 value: {get_attr: [ExternalPort, ip_address]}
397 internal_api_ip_address:
398 description: IP address of the server in the internal_api network
399 value: {get_attr: [InternalApiPort, ip_address]}
401 description: IP address of the server in the storage network
402 value: {get_attr: [StoragePort, ip_address]}
403 storage_mgmt_ip_address:
404 description: IP address of the server in the storage_mgmt network
405 value: {get_attr: [StorageMgmtPort, ip_address]}
407 description: IP address of the server in the tenant network
408 value: {get_attr: [TenantPort, ip_address]}
409 management_ip_address:
410 description: IP address of the server in the management network
411 value: {get_attr: [ManagementPort, ip_address]}