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
11 description: A random string to be used as a salt when hashing to determine mappings
16 default: overcloud-swift-storage
20 description: Name of an existing Nova key pair to enable SSH access to the instances
24 description: Value of mount_check in Swift account/container/object -server.conf
29 description: The minimum time (in hours) before a partition in a ring can be moved following a rebalance.
32 description: Partition Power to use when building Swift rings
37 description: How many replicas to use in the swift rings.
38 SnmpdReadonlyUserName:
40 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
42 SnmpdReadonlyUserPassword:
44 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
49 description: Comma-separated list of ntp servers
50 type: comma_delimited_list
53 description: Set to true to enable package installation via Puppet
59 Setting to a previously unused value during stack-update will trigger
60 package update on all nodes
63 description: Mapping of service_name -> network name. Typically set
64 via parameter_defaults in the resource registry.
68 default: '' # Defaults to Heat created hostname
72 Additional hiera configuration to inject into the cluster. Note
73 that ObjectStorageExtraConfig takes precedence over ExtraConfig.
75 ObjectStorageExtraConfig:
78 Role specific additional hiera configuration to inject into the cluster.
80 NetworkDeploymentActions:
81 type: comma_delimited_list
83 Heat action when to apply network configuration changes
89 The DNS domain used for the hosts. This should match the dhcp_domain
90 configured in the Undercloud neutron. Defaults to localdomain.
94 Extra properties or metadata passed to Nova for the created nodes in
95 the overcloud. It's accessible via the Nova metadata API.
99 description: Optional scheduler hints to pass to nova
105 type: OS::Nova::Server
107 image: {get_param: Image}
108 flavor: {get_param: Flavor}
109 key_name: {get_param: KeyName}
112 user_data_format: SOFTWARE_CONFIG
113 user_data: {get_resource: UserData}
114 name: {get_param: Hostname}
115 metadata: {get_param: ServerMetadata}
116 scheduler_hints: {get_param: SchedulerHints}
118 # Combine the NodeAdminUserData and NodeUserData mime archives
120 type: OS::Heat::MultipartMime
123 - config: {get_resource: NodeAdminUserData}
125 - config: {get_resource: NodeUserData}
128 # Creates the "heat-admin" user if configured via the environment
129 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
131 type: OS::TripleO::NodeAdminUserData
133 # For optional operator additional userdata
134 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
136 type: OS::TripleO::NodeUserData
139 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
141 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
144 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
146 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
149 type: OS::TripleO::SwiftStorage::Ports::StoragePort
151 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
154 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
156 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
159 type: OS::TripleO::SwiftStorage::Ports::TenantPort
161 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
164 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
166 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
169 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
171 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
172 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
173 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
174 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
175 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
176 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
177 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
180 type: OS::TripleO::Network::Ports::NetIpMap
182 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
183 ExternalIp: {get_attr: [ExternalPort, ip_address]}
184 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
185 StorageIp: {get_attr: [StoragePort, ip_address]}
186 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
187 TenantIp: {get_attr: [TenantPort, ip_address]}
188 ManagementIp: {get_attr: [ManagementPort, ip_address]}
191 type: OS::TripleO::SoftwareDeployment
193 config: {get_resource: NetworkConfig}
194 server: {get_resource: SwiftStorage}
195 actions: {get_param: NetworkDeploymentActions}
197 SwiftStorageHieraConfig:
198 type: OS::Heat::StructuredConfig
200 group: os-apply-config
205 - heat_config_%{::deploy_config_name}
209 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
210 - all_nodes # provided by allNodesConfig
215 raw_data: {get_file: hieradata/common.yaml}
217 mapped_data: {get_param: ObjectStorageExtraConfig}
219 mapped_data: {get_param: ExtraConfig}
221 raw_data: {get_file: hieradata/object.yaml}
222 mapped_data: # data supplied directly to this deployment configuration, etc
223 swift::swift_hash_suffix: { get_input: swift_hash_suffix }
224 tripleo::ringbuilder::part_power: { get_input: swift_part_power }
225 tripleo::ringbuilder::replicas: {get_input: swift_replicas }
227 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
228 swift_mount_check: {get_input: swift_mount_check }
229 tripleo::ringbuilder::min_part_hours: { get_input: swift_min_part_hours }
230 ntp::servers: {get_input: ntp_servers}
231 # NOTE(dprince): build_ring support is currently not wired in.
232 # See: https://review.openstack.org/#/c/109225/
233 tripleo::ringbuilder::build_ring: True
234 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
235 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
236 tripleo::packages::enable_install: {get_input: enable_package_install}
237 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
240 SwiftStorageHieraDeploy:
241 type: OS::Heat::StructuredDeployment
242 depends_on: NetworkDeployment
244 server: {get_resource: SwiftStorage}
245 config: {get_resource: SwiftStorageHieraConfig}
247 local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
248 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
249 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
250 swift_hash_suffix: {get_param: HashSuffix}
251 swift_mount_check: {get_param: MountCheck}
252 swift_min_part_hours: {get_param: MinPartHours}
253 swift_part_power: {get_param: PartPower}
254 swift_replicas: { get_param: Replicas}
255 ntp_servers: {get_param: NtpServer}
256 enable_package_install: {get_param: EnablePackageInstall}
257 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
258 swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
260 # Resource for site-specific injection of root certificate
262 depends_on: SwiftStorageHieraDeploy
263 type: OS::TripleO::NodeTLSCAData
265 server: {get_resource: SwiftStorage}
267 # Hook for site-specific additional pre-deployment config,
268 # applying to all nodes, e.g node registration/unregistration
270 depends_on: NodeTLSCAData
271 type: OS::TripleO::NodeExtraConfig
273 server: {get_resource: SwiftStorage}
276 type: OS::TripleO::Tasks::PackageUpdate
279 type: OS::Heat::SoftwareDeployment
281 config: {get_resource: UpdateConfig}
282 server: {get_resource: SwiftStorage}
285 get_param: UpdateIdentifier
291 template: "IP HOST.DOMAIN HOST"
293 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
294 DOMAIN: {get_param: CloudDomain}
295 HOST: {get_attr: [SwiftStorage, name]}
296 nova_server_resource:
297 description: Heat resource handle for the swift storage server
299 {get_resource: SwiftStorage}
301 description: Swift device formatted for swift-ring-builder
304 template: 'r1z1-IP:%PORT%/d1'
306 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
308 description: IP address of the server in the external network
309 value: {get_attr: [ExternalPort, ip_address]}
310 internal_api_ip_address:
311 description: IP address of the server in the internal_api network
312 value: {get_attr: [InternalApiPort, ip_address]}
314 description: IP address of the server in the storage network
315 value: {get_attr: [StoragePort, ip_address]}
316 storage_mgmt_ip_address:
317 description: IP address of the server in the storage_mgmt network
318 value: {get_attr: [StorageMgmtPort, ip_address]}
320 description: IP address of the server in the tenant network
321 value: {get_attr: [TenantPort, ip_address]}
322 management_ip_address:
323 description: IP address of the server in the management network
324 value: {get_attr: [ManagementPort, ip_address]}
326 description: identifier which changes if the node configuration may need re-applying
330 - - {get_attr: [SwiftStorageHieraDeploy, deploy_stdout]}
331 - {get_attr: [NodeTLSCAData, deploy_stdout]}
332 - {get_param: UpdateIdentifier}