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 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
202 StorageIp: {get_attr: [StoragePort, ip_address]}
203 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
204 TenantIp: {get_attr: [TenantPort, ip_address]}
205 ManagementIp: {get_attr: [ManagementPort, ip_address]}
208 type: OS::TripleO::SoftwareDeployment
210 name: NetworkDeployment
211 config: {get_resource: NetworkConfig}
212 server: {get_resource: SwiftStorage}
213 actions: {get_param: NetworkDeploymentActions}
215 SwiftStorageHieraConfig:
216 type: OS::Heat::StructuredConfig
218 group: os-apply-config
223 - heat_config_%{::deploy_config_name}
227 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
228 - all_nodes # provided by allNodesConfig
233 raw_data: {get_file: hieradata/common.yaml}
235 mapped_data: {get_param: ObjectStorageExtraConfig}
237 mapped_data: {get_param: ExtraConfig}
239 raw_data: {get_file: hieradata/object.yaml}
240 mapped_data: # data supplied directly to this deployment configuration, etc
241 swift::swift_hash_suffix: { get_input: swift_hash_suffix }
242 tripleo::ringbuilder::part_power: { get_input: swift_part_power }
243 tripleo::ringbuilder::replicas: {get_input: swift_replicas }
245 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
246 swift_mount_check: {get_input: swift_mount_check }
247 tripleo::ringbuilder::min_part_hours: { get_input: swift_min_part_hours }
248 ntp::servers: {get_input: ntp_servers}
249 timezone::timezone: {get_input: timezone}
250 # NOTE(dprince): build_ring support is currently not wired in.
251 # See: https://review.openstack.org/#/c/109225/
252 tripleo::ringbuilder::build_ring: True
253 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
254 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
255 tripleo::packages::enable_install: {get_input: enable_package_install}
256 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
259 SwiftStorageHieraDeploy:
260 type: OS::Heat::StructuredDeployment
261 depends_on: NetworkDeployment
263 name: SwiftStorageHieraDeploy
264 server: {get_resource: SwiftStorage}
265 config: {get_resource: SwiftStorageHieraConfig}
267 local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
268 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
269 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
270 swift_hash_suffix: {get_param: HashSuffix}
271 swift_mount_check: {get_param: MountCheck}
272 swift_min_part_hours: {get_param: MinPartHours}
273 swift_part_power: {get_param: PartPower}
274 swift_replicas: { get_param: Replicas}
275 ntp_servers: {get_param: NtpServer}
276 timezone: {get_param: TimeZone}
277 enable_package_install: {get_param: EnablePackageInstall}
278 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
279 swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
281 # Resource for site-specific injection of root certificate
283 depends_on: SwiftStorageHieraDeploy
284 type: OS::TripleO::NodeTLSCAData
286 server: {get_resource: SwiftStorage}
288 # Hook for site-specific additional pre-deployment config,
289 # applying to all nodes, e.g node registration/unregistration
291 depends_on: NodeTLSCAData
292 type: OS::TripleO::NodeExtraConfig
294 server: {get_resource: SwiftStorage}
297 type: OS::TripleO::Tasks::PackageUpdate
300 type: OS::Heat::SoftwareDeployment
302 config: {get_resource: UpdateConfig}
303 server: {get_resource: SwiftStorage}
306 get_param: UpdateIdentifier
313 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
314 EXTERNALIP EXTERNALHOST
315 INTERNAL_APIIP INTERNAL_APIHOST
316 STORAGEIP STORAGEHOST
317 STORAGE_MGMTIP STORAGE_MGMTHOST
319 MANAGEMENTIP 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
368 template: 'r1z1-IP:%PORT%/d1'
370 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
372 description: IP address of the server in the external network
373 value: {get_attr: [ExternalPort, ip_address]}
374 internal_api_ip_address:
375 description: IP address of the server in the internal_api network
376 value: {get_attr: [InternalApiPort, ip_address]}
378 description: IP address of the server in the storage network
379 value: {get_attr: [StoragePort, ip_address]}
380 storage_mgmt_ip_address:
381 description: IP address of the server in the storage_mgmt network
382 value: {get_attr: [StorageMgmtPort, ip_address]}
384 description: IP address of the server in the tenant network
385 value: {get_attr: [TenantPort, ip_address]}
386 management_ip_address:
387 description: IP address of the server in the management network
388 value: {get_attr: [ManagementPort, ip_address]}
390 description: identifier which changes if the node configuration may need re-applying
394 - - {get_attr: [SwiftStorageHieraDeploy, deploy_stdout]}
395 - {get_attr: [NodeTLSCAData, deploy_stdout]}
396 - {get_param: UpdateIdentifier}