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:
101 description: Command which will be run whenever configuration data changes
102 default: os-refresh-config --timeout 14400
107 type: OS::Nova::Server
110 command: {get_param: ConfigCommand}
112 image: {get_param: Image}
113 flavor: {get_param: Flavor}
114 key_name: {get_param: KeyName}
117 user_data_format: SOFTWARE_CONFIG
118 user_data: {get_resource: UserData}
121 template: {get_param: Hostname}
122 params: {get_param: HostnameMap}
123 software_config_transport: {get_param: SoftwareConfigTransport}
124 metadata: {get_param: ServerMetadata}
125 scheduler_hints: {get_param: SchedulerHints}
127 # Combine the NodeAdminUserData and NodeUserData mime archives
129 type: OS::Heat::MultipartMime
132 - config: {get_resource: NodeAdminUserData}
134 - config: {get_resource: NodeUserData}
137 # Creates the "heat-admin" user if configured via the environment
138 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
140 type: OS::TripleO::NodeAdminUserData
142 # For optional operator additional userdata
143 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
145 type: OS::TripleO::NodeUserData
148 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
150 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
151 IPPool: {get_param: SwiftStorageIPs}
152 NodeIndex: {get_param: NodeIndex}
155 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
157 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
158 IPPool: {get_param: SwiftStorageIPs}
159 NodeIndex: {get_param: NodeIndex}
162 type: OS::TripleO::SwiftStorage::Ports::StoragePort
164 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
165 IPPool: {get_param: SwiftStorageIPs}
166 NodeIndex: {get_param: NodeIndex}
169 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
171 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
172 IPPool: {get_param: SwiftStorageIPs}
173 NodeIndex: {get_param: NodeIndex}
176 type: OS::TripleO::SwiftStorage::Ports::TenantPort
178 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
179 IPPool: {get_param: SwiftStorageIPs}
180 NodeIndex: {get_param: NodeIndex}
183 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
185 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
186 IPPool: {get_param: SwiftStorageIPs}
187 NodeIndex: {get_param: NodeIndex}
190 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
192 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
193 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
194 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
195 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
196 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
197 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
198 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
201 type: OS::TripleO::Network::Ports::NetIpMap
203 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
204 ExternalIp: {get_attr: [ExternalPort, ip_address]}
205 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
206 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
207 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
208 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
209 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
210 StorageIp: {get_attr: [StoragePort, ip_address]}
211 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
212 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
213 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
214 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
215 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
216 TenantIp: {get_attr: [TenantPort, ip_address]}
217 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
218 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
219 ManagementIp: {get_attr: [ManagementPort, ip_address]}
220 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
221 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
224 type: OS::TripleO::SoftwareDeployment
226 name: NetworkDeployment
227 config: {get_resource: NetworkConfig}
228 server: {get_resource: SwiftStorage}
229 actions: {get_param: NetworkDeploymentActions}
231 SwiftStorageHieraConfig:
232 type: OS::Heat::StructuredConfig
234 group: os-apply-config
239 - heat_config_%{::deploy_config_name}
244 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
245 - all_nodes # provided by allNodesConfig
249 merge_behavior: deeper
252 mapped_data: {get_param: ServiceConfigSettings}
254 raw_data: {get_file: hieradata/common.yaml}
257 net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
258 net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
259 net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
261 mapped_data: {get_param: ObjectStorageExtraConfig}
263 mapped_data: {get_param: ExtraConfig}
265 raw_data: {get_file: hieradata/object.yaml}
266 mapped_data: # data supplied directly to this deployment configuration, etc
267 swift::swift_hash_path_suffix: { get_input: swift_hash_suffix }
268 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
269 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
270 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
271 tripleo::packages::enable_install: {get_input: enable_package_install}
272 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
275 SwiftStorageHieraDeploy:
276 type: OS::Heat::StructuredDeployment
277 depends_on: NetworkDeployment
279 name: SwiftStorageHieraDeploy
280 server: {get_resource: SwiftStorage}
281 config: {get_resource: SwiftStorageHieraConfig}
283 local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
284 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
285 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
286 swift_hash_suffix: {get_param: HashSuffix}
287 enable_package_install: {get_param: EnablePackageInstall}
288 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
289 swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
291 # Resource for site-specific injection of root certificate
293 depends_on: SwiftStorageHieraDeploy
294 type: OS::TripleO::NodeTLSCAData
296 server: {get_resource: SwiftStorage}
298 # Hook for site-specific additional pre-deployment config,
299 # applying to all nodes, e.g node registration/unregistration
301 depends_on: NodeTLSCAData
302 type: OS::TripleO::NodeExtraConfig
304 server: {get_resource: SwiftStorage}
307 type: OS::TripleO::Tasks::PackageUpdate
310 type: OS::Heat::SoftwareDeployment
312 config: {get_resource: UpdateConfig}
313 server: {get_resource: SwiftStorage}
316 get_param: UpdateIdentifier
320 description: IP address of the server in the ctlplane network
321 value: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
323 description: Hostname of the server
324 value: {get_attr: [SwiftStorage, name]}
329 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
330 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
331 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
332 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
333 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
334 TENANTIP TENANTHOST.DOMAIN TENANTHOST
335 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
337 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
338 DOMAIN: {get_param: CloudDomain}
339 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
340 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
344 - - {get_attr: [SwiftStorage, name]}
346 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
350 - - {get_attr: [SwiftStorage, name]}
352 STORAGEIP: {get_attr: [StoragePort, ip_address]}
356 - - {get_attr: [SwiftStorage, name]}
358 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
362 - - {get_attr: [SwiftStorage, name]}
364 TENANTIP: {get_attr: [TenantPort, ip_address]}
368 - - {get_attr: [SwiftStorage, name]}
370 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
374 - - {get_attr: [SwiftStorage, name]}
376 nova_server_resource:
377 description: Heat resource handle for the swift storage server
379 {get_resource: SwiftStorage}
381 description: Swift device formatted for swift-ring-builder
384 template: 'r1z1-IP:%PORT%/d1'
386 IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
388 description: IP address of the server in the external network
389 value: {get_attr: [ExternalPort, ip_address]}
390 internal_api_ip_address:
391 description: IP address of the server in the internal_api network
392 value: {get_attr: [InternalApiPort, ip_address]}
394 description: IP address of the server in the storage network
395 value: {get_attr: [StoragePort, ip_address]}
396 storage_mgmt_ip_address:
397 description: IP address of the server in the storage_mgmt network
398 value: {get_attr: [StorageMgmtPort, ip_address]}
400 description: IP address of the server in the tenant network
401 value: {get_attr: [TenantPort, ip_address]}
402 management_ip_address:
403 description: IP address of the server in the management network
404 value: {get_attr: [ManagementPort, ip_address]}