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 config: {get_resource: NetworkConfig}
204 server: {get_resource: SwiftStorage}
205 actions: {get_param: NetworkDeploymentActions}
207 SwiftStorageHieraConfig:
208 type: OS::Heat::StructuredConfig
210 group: os-apply-config
215 - heat_config_%{::deploy_config_name}
219 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
220 - all_nodes # provided by allNodesConfig
225 raw_data: {get_file: hieradata/common.yaml}
227 mapped_data: {get_param: ObjectStorageExtraConfig}
229 mapped_data: {get_param: ExtraConfig}
231 raw_data: {get_file: hieradata/object.yaml}
232 mapped_data: # data supplied directly to this deployment configuration, etc
233 swift::swift_hash_suffix: { get_input: swift_hash_suffix }
234 tripleo::ringbuilder::part_power: { get_input: swift_part_power }
235 tripleo::ringbuilder::replicas: {get_input: swift_replicas }
237 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
238 swift_mount_check: {get_input: swift_mount_check }
239 tripleo::ringbuilder::min_part_hours: { get_input: swift_min_part_hours }
240 ntp::servers: {get_input: ntp_servers}
241 timezone::timezone: {get_input: timezone}
242 # NOTE(dprince): build_ring support is currently not wired in.
243 # See: https://review.openstack.org/#/c/109225/
244 tripleo::ringbuilder::build_ring: True
245 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
246 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
247 tripleo::packages::enable_install: {get_input: enable_package_install}
248 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
251 SwiftStorageHieraDeploy:
252 type: OS::Heat::StructuredDeployment
253 depends_on: NetworkDeployment
255 server: {get_resource: SwiftStorage}
256 config: {get_resource: SwiftStorageHieraConfig}
258 local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
259 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
260 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
261 swift_hash_suffix: {get_param: HashSuffix}
262 swift_mount_check: {get_param: MountCheck}
263 swift_min_part_hours: {get_param: MinPartHours}
264 swift_part_power: {get_param: PartPower}
265 swift_replicas: { get_param: Replicas}
266 ntp_servers: {get_param: NtpServer}
267 timezone: {get_param: TimeZone}
268 enable_package_install: {get_param: EnablePackageInstall}
269 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
270 swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
272 # Resource for site-specific injection of root certificate
274 depends_on: SwiftStorageHieraDeploy
275 type: OS::TripleO::NodeTLSCAData
277 server: {get_resource: SwiftStorage}
279 # Hook for site-specific additional pre-deployment config,
280 # applying to all nodes, e.g node registration/unregistration
282 depends_on: NodeTLSCAData
283 type: OS::TripleO::NodeExtraConfig
285 server: {get_resource: SwiftStorage}
288 type: OS::TripleO::Tasks::PackageUpdate
291 type: OS::Heat::SoftwareDeployment
293 config: {get_resource: UpdateConfig}
294 server: {get_resource: SwiftStorage}
297 get_param: UpdateIdentifier
303 template: "IP HOST.DOMAIN HOST"
305 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
306 DOMAIN: {get_param: CloudDomain}
307 HOST: {get_attr: [SwiftStorage, name]}
308 nova_server_resource:
309 description: Heat resource handle for the swift storage server
311 {get_resource: SwiftStorage}
313 description: Swift device formatted for swift-ring-builder
316 template: 'r1z1-IP:%PORT%/d1'
318 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
320 description: IP address of the server in the external network
321 value: {get_attr: [ExternalPort, ip_address]}
322 internal_api_ip_address:
323 description: IP address of the server in the internal_api network
324 value: {get_attr: [InternalApiPort, ip_address]}
326 description: IP address of the server in the storage network
327 value: {get_attr: [StoragePort, ip_address]}
328 storage_mgmt_ip_address:
329 description: IP address of the server in the storage_mgmt network
330 value: {get_attr: [StorageMgmtPort, ip_address]}
332 description: IP address of the server in the tenant network
333 value: {get_attr: [TenantPort, ip_address]}
334 management_ip_address:
335 description: IP address of the server in the management network
336 value: {get_attr: [ManagementPort, ip_address]}
338 description: identifier which changes if the node configuration may need re-applying
342 - - {get_attr: [SwiftStorageHieraDeploy, deploy_stdout]}
343 - {get_attr: [NodeTLSCAData, deploy_stdout]}
344 - {get_param: UpdateIdentifier}