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
305 template: "IP HOST.DOMAIN HOST"
307 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
308 DOMAIN: {get_param: CloudDomain}
309 HOST: {get_attr: [SwiftStorage, name]}
310 nova_server_resource:
311 description: Heat resource handle for the swift storage server
313 {get_resource: SwiftStorage}
315 description: Swift device formatted for swift-ring-builder
318 template: 'r1z1-IP:%PORT%/d1'
320 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
322 description: IP address of the server in the external network
323 value: {get_attr: [ExternalPort, ip_address]}
324 internal_api_ip_address:
325 description: IP address of the server in the internal_api network
326 value: {get_attr: [InternalApiPort, ip_address]}
328 description: IP address of the server in the storage network
329 value: {get_attr: [StoragePort, ip_address]}
330 storage_mgmt_ip_address:
331 description: IP address of the server in the storage_mgmt network
332 value: {get_attr: [StorageMgmtPort, ip_address]}
334 description: IP address of the server in the tenant network
335 value: {get_attr: [TenantPort, ip_address]}
336 management_ip_address:
337 description: IP address of the server in the management network
338 value: {get_attr: [ManagementPort, ip_address]}
340 description: identifier which changes if the node configuration may need re-applying
344 - - {get_attr: [SwiftStorageHieraDeploy, deploy_stdout]}
345 - {get_attr: [NodeTLSCAData, deploy_stdout]}
346 - {get_param: UpdateIdentifier}