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
23 description: Value of mount_check in Swift account/container/object -server.conf
28 description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
31 description: Partition Power to use when building Swift rings
36 description: How many replicas to use in the swift rings.
37 SnmpdReadonlyUserName:
39 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
41 SnmpdReadonlyUserPassword:
42 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
47 description: Comma-separated list of ntp servers
48 type: comma_delimited_list
51 description: Set to true to enable package installation via Puppet
57 Setting to a previously unused value during stack-update will trigger
58 package update on all nodes
61 description: Mapping of service_name -> network name. Typically set
62 via parameter_defaults in the resource registry.
66 description: The timezone to be set on Ceph nodes.
70 default: '' # Defaults to Heat created hostname
74 description: Optional mapping to override hostnames
78 Additional hiera configuration to inject into the cluster. Note
79 that ObjectStorageExtraConfig takes precedence over ExtraConfig.
81 ObjectStorageExtraConfig:
84 Role specific additional hiera configuration to inject into the cluster.
86 NetworkDeploymentActions:
87 type: comma_delimited_list
89 Heat action when to apply network configuration changes
91 SoftwareConfigTransport:
92 default: POLL_SERVER_CFN
94 How the server should receive the metadata required for software configuration.
97 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
102 The DNS domain used for the hosts. This should match the dhcp_domain
103 configured in the Undercloud neutron. Defaults to localdomain.
107 Extra properties or metadata passed to Nova for the created nodes in
108 the overcloud. It's accessible via the Nova metadata API.
112 description: Optional scheduler hints to pass to nova
118 type: OS::Nova::Server
120 image: {get_param: Image}
121 flavor: {get_param: Flavor}
122 key_name: {get_param: KeyName}
125 user_data_format: SOFTWARE_CONFIG
126 user_data: {get_resource: UserData}
129 template: {get_param: Hostname}
130 params: {get_param: HostnameMap}
131 software_config_transport: {get_param: SoftwareConfigTransport}
132 metadata: {get_param: ServerMetadata}
133 scheduler_hints: {get_param: SchedulerHints}
135 # Combine the NodeAdminUserData and NodeUserData mime archives
137 type: OS::Heat::MultipartMime
140 - config: {get_resource: NodeAdminUserData}
142 - config: {get_resource: NodeUserData}
145 # Creates the "heat-admin" user if configured via the environment
146 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
148 type: OS::TripleO::NodeAdminUserData
150 # For optional operator additional userdata
151 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
153 type: OS::TripleO::NodeUserData
156 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
158 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
161 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
163 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
166 type: OS::TripleO::SwiftStorage::Ports::StoragePort
168 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
171 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
173 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
176 type: OS::TripleO::SwiftStorage::Ports::TenantPort
178 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
181 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
183 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
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 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
202 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
203 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
204 StorageIp: {get_attr: [StoragePort, ip_address]}
205 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
206 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
207 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
208 TenantIp: {get_attr: [TenantPort, ip_address]}
209 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
210 ManagementIp: {get_attr: [ManagementPort, ip_address]}
211 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
214 type: OS::TripleO::SoftwareDeployment
216 name: NetworkDeployment
217 config: {get_resource: NetworkConfig}
218 server: {get_resource: SwiftStorage}
219 actions: {get_param: NetworkDeploymentActions}
221 SwiftStorageHieraConfig:
222 type: OS::Heat::StructuredConfig
224 group: os-apply-config
229 - heat_config_%{::deploy_config_name}
233 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
234 - all_nodes # provided by allNodesConfig
239 raw_data: {get_file: hieradata/common.yaml}
241 mapped_data: {get_param: ObjectStorageExtraConfig}
243 mapped_data: {get_param: ExtraConfig}
245 raw_data: {get_file: hieradata/object.yaml}
246 mapped_data: # data supplied directly to this deployment configuration, etc
247 swift::swift_hash_suffix: { get_input: swift_hash_suffix }
248 tripleo::ringbuilder::part_power: { get_input: swift_part_power }
249 tripleo::ringbuilder::replicas: {get_input: swift_replicas }
251 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
252 swift_mount_check: {get_input: swift_mount_check }
253 tripleo::ringbuilder::min_part_hours: { get_input: swift_min_part_hours }
254 ntp::servers: {get_input: ntp_servers}
255 timezone::timezone: {get_input: timezone}
256 # NOTE(dprince): build_ring support is currently not wired in.
257 # See: https://review.openstack.org/#/c/109225/
258 tripleo::ringbuilder::build_ring: True
259 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
260 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
261 tripleo::packages::enable_install: {get_input: enable_package_install}
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 local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
274 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
275 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
276 swift_hash_suffix: {get_param: HashSuffix}
277 swift_mount_check: {get_param: MountCheck}
278 swift_min_part_hours: {get_param: MinPartHours}
279 swift_part_power: {get_param: PartPower}
280 swift_replicas: { get_param: Replicas}
281 ntp_servers: {get_param: NtpServer}
282 timezone: {get_param: TimeZone}
283 enable_package_install: {get_param: EnablePackageInstall}
284 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
285 swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
287 # Resource for site-specific injection of root certificate
289 depends_on: SwiftStorageHieraDeploy
290 type: OS::TripleO::NodeTLSCAData
292 server: {get_resource: SwiftStorage}
294 # Hook for site-specific additional pre-deployment config,
295 # applying to all nodes, e.g node registration/unregistration
297 depends_on: NodeTLSCAData
298 type: OS::TripleO::NodeExtraConfig
300 server: {get_resource: SwiftStorage}
303 type: OS::TripleO::Tasks::PackageUpdate
306 type: OS::Heat::SoftwareDeployment
308 config: {get_resource: UpdateConfig}
309 server: {get_resource: SwiftStorage}
312 get_param: UpdateIdentifier
319 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
320 EXTERNALIP EXTERNALHOST
321 INTERNAL_APIIP INTERNAL_APIHOST
322 STORAGEIP STORAGEHOST
323 STORAGE_MGMTIP STORAGE_MGMTHOST
325 MANAGEMENTIP MANAGEMENTHOST
327 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
328 DOMAIN: {get_param: CloudDomain}
329 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
330 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
334 - - {get_attr: [SwiftStorage, name]}
336 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
340 - - {get_attr: [SwiftStorage, name]}
342 STORAGEIP: {get_attr: [StoragePort, ip_address]}
346 - - {get_attr: [SwiftStorage, name]}
348 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
352 - - {get_attr: [SwiftStorage, name]}
354 TENANTIP: {get_attr: [TenantPort, ip_address]}
358 - - {get_attr: [SwiftStorage, name]}
360 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
364 - - {get_attr: [SwiftStorage, name]}
366 nova_server_resource:
367 description: Heat resource handle for the swift storage server
369 {get_resource: SwiftStorage}
371 description: Swift device formatted for swift-ring-builder
374 template: 'r1z1-IP:%PORT%/d1'
376 IP: {get_attr: [NetIpMap, net_ip_uri_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
378 description: IP address of the server in the external network
379 value: {get_attr: [ExternalPort, ip_address]}
380 internal_api_ip_address:
381 description: IP address of the server in the internal_api network
382 value: {get_attr: [InternalApiPort, ip_address]}
384 description: IP address of the server in the storage network
385 value: {get_attr: [StoragePort, ip_address]}
386 storage_mgmt_ip_address:
387 description: IP address of the server in the storage_mgmt network
388 value: {get_attr: [StorageMgmtPort, ip_address]}
390 description: IP address of the server in the tenant network
391 value: {get_attr: [TenantPort, ip_address]}
392 management_ip_address:
393 description: IP address of the server in the management network
394 value: {get_attr: [ManagementPort, ip_address]}
396 description: identifier which changes if the node configuration may need re-applying
400 - - {get_attr: [SwiftStorageHieraDeploy, deploy_stdout]}
401 - {get_attr: [NodeTLSCAData, deploy_stdout]}
402 - {get_param: UpdateIdentifier}