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 Additional hiera configuration to inject into the cluster. Note
75 that ObjectStorageExtraConfig takes precedence over ExtraConfig.
77 ObjectStorageExtraConfig:
80 Role specific additional hiera configuration to inject into the cluster.
82 NetworkDeploymentActions:
83 type: comma_delimited_list
85 Heat action when to apply network configuration changes
87 SoftwareConfigTransport:
88 default: POLL_SERVER_CFN
90 How the server should receive the metadata required for software configuration.
93 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
98 The DNS domain used for the hosts. This should match the dhcp_domain
99 configured in the Undercloud neutron. Defaults to localdomain.
103 Extra properties or metadata passed to Nova for the created nodes in
104 the overcloud. It's accessible via the Nova metadata API.
108 description: Optional scheduler hints to pass to nova
114 type: OS::Nova::Server
116 image: {get_param: Image}
117 flavor: {get_param: Flavor}
118 key_name: {get_param: KeyName}
121 user_data_format: SOFTWARE_CONFIG
122 user_data: {get_resource: UserData}
123 name: {get_param: Hostname}
124 software_config_transport: {get_param: SoftwareConfigTransport}
125 metadata: {get_param: ServerMetadata}
126 scheduler_hints: {get_param: SchedulerHints}
128 # Combine the NodeAdminUserData and NodeUserData mime archives
130 type: OS::Heat::MultipartMime
133 - config: {get_resource: NodeAdminUserData}
135 - config: {get_resource: NodeUserData}
138 # Creates the "heat-admin" user if configured via the environment
139 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
141 type: OS::TripleO::NodeAdminUserData
143 # For optional operator additional userdata
144 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
146 type: OS::TripleO::NodeUserData
149 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
151 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
154 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
156 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
159 type: OS::TripleO::SwiftStorage::Ports::StoragePort
161 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
164 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
166 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
169 type: OS::TripleO::SwiftStorage::Ports::TenantPort
171 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
174 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
176 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
179 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
181 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
182 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
183 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
184 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
185 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
186 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
187 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
190 type: OS::TripleO::Network::Ports::NetIpMap
192 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
193 ExternalIp: {get_attr: [ExternalPort, ip_address]}
194 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
195 StorageIp: {get_attr: [StoragePort, ip_address]}
196 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
197 TenantIp: {get_attr: [TenantPort, ip_address]}
198 ManagementIp: {get_attr: [ManagementPort, ip_address]}
201 type: OS::TripleO::SoftwareDeployment
203 name: NetworkDeployment
204 config: {get_resource: NetworkConfig}
205 server: {get_resource: SwiftStorage}
206 actions: {get_param: NetworkDeploymentActions}
208 SwiftStorageHieraConfig:
209 type: OS::Heat::StructuredConfig
211 group: os-apply-config
216 - heat_config_%{::deploy_config_name}
220 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
221 - all_nodes # provided by allNodesConfig
226 raw_data: {get_file: hieradata/common.yaml}
228 mapped_data: {get_param: ObjectStorageExtraConfig}
230 mapped_data: {get_param: ExtraConfig}
232 raw_data: {get_file: hieradata/object.yaml}
233 mapped_data: # data supplied directly to this deployment configuration, etc
234 swift::swift_hash_suffix: { get_input: swift_hash_suffix }
235 tripleo::ringbuilder::part_power: { get_input: swift_part_power }
236 tripleo::ringbuilder::replicas: {get_input: swift_replicas }
238 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
239 swift_mount_check: {get_input: swift_mount_check }
240 tripleo::ringbuilder::min_part_hours: { get_input: swift_min_part_hours }
241 ntp::servers: {get_input: ntp_servers}
242 timezone::timezone: {get_input: timezone}
243 # NOTE(dprince): build_ring support is currently not wired in.
244 # See: https://review.openstack.org/#/c/109225/
245 tripleo::ringbuilder::build_ring: True
246 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
247 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
248 tripleo::packages::enable_install: {get_input: enable_package_install}
249 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
252 SwiftStorageHieraDeploy:
253 type: OS::Heat::StructuredDeployment
254 depends_on: NetworkDeployment
256 name: SwiftStorageHieraDeploy
257 server: {get_resource: SwiftStorage}
258 config: {get_resource: SwiftStorageHieraConfig}
260 local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
261 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
262 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
263 swift_hash_suffix: {get_param: HashSuffix}
264 swift_mount_check: {get_param: MountCheck}
265 swift_min_part_hours: {get_param: MinPartHours}
266 swift_part_power: {get_param: PartPower}
267 swift_replicas: { get_param: Replicas}
268 ntp_servers: {get_param: NtpServer}
269 timezone: {get_param: TimeZone}
270 enable_package_install: {get_param: EnablePackageInstall}
271 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
272 swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
274 # Resource for site-specific injection of root certificate
276 depends_on: SwiftStorageHieraDeploy
277 type: OS::TripleO::NodeTLSCAData
279 server: {get_resource: SwiftStorage}
281 # Hook for site-specific additional pre-deployment config,
282 # applying to all nodes, e.g node registration/unregistration
284 depends_on: NodeTLSCAData
285 type: OS::TripleO::NodeExtraConfig
287 server: {get_resource: SwiftStorage}
290 type: OS::TripleO::Tasks::PackageUpdate
293 type: OS::Heat::SoftwareDeployment
295 config: {get_resource: UpdateConfig}
296 server: {get_resource: SwiftStorage}
299 get_param: UpdateIdentifier
306 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
307 EXTERNALIP EXTERNALHOST
308 INTERNAL_APIIP INTERNAL_APIHOST
309 STORAGEIP STORAGEHOST
310 STORAGE_MGMTIP STORAGE_MGMTHOST
312 MANAGEMENTIP MANAGEMENTHOST
314 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
315 DOMAIN: {get_param: CloudDomain}
316 PRIMARYHOST: {get_attr: [SwiftStorage, name]}
317 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
321 - - {get_attr: [SwiftStorage, name]}
323 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
327 - - {get_attr: [SwiftStorage, name]}
329 STORAGEIP: {get_attr: [StoragePort, ip_address]}
333 - - {get_attr: [SwiftStorage, name]}
335 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
339 - - {get_attr: [SwiftStorage, name]}
341 TENANTIP: {get_attr: [TenantPort, ip_address]}
345 - - {get_attr: [SwiftStorage, name]}
347 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
351 - - {get_attr: [SwiftStorage, name]}
353 nova_server_resource:
354 description: Heat resource handle for the swift storage server
356 {get_resource: SwiftStorage}
358 description: Swift device formatted for swift-ring-builder
361 template: 'r1z1-IP:%PORT%/d1'
363 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
365 description: IP address of the server in the external network
366 value: {get_attr: [ExternalPort, ip_address]}
367 internal_api_ip_address:
368 description: IP address of the server in the internal_api network
369 value: {get_attr: [InternalApiPort, ip_address]}
371 description: IP address of the server in the storage network
372 value: {get_attr: [StoragePort, ip_address]}
373 storage_mgmt_ip_address:
374 description: IP address of the server in the storage_mgmt network
375 value: {get_attr: [StorageMgmtPort, ip_address]}
377 description: IP address of the server in the tenant network
378 value: {get_attr: [TenantPort, ip_address]}
379 management_ip_address:
380 description: IP address of the server in the management network
381 value: {get_attr: [ManagementPort, ip_address]}
383 description: identifier which changes if the node configuration may need re-applying
387 - - {get_attr: [SwiftStorageHieraDeploy, deploy_stdout]}
388 - {get_attr: [NodeTLSCAData, deploy_stdout]}
389 - {get_param: UpdateIdentifier}