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 default: '' # Defaults to Heat created hostname
70 Additional hiera configuration to inject into the cluster. Note
71 that ObjectStorageExtraConfig takes precedence over ExtraConfig.
73 ObjectStorageExtraConfig:
76 Role specific additional hiera configuration to inject into the cluster.
78 NetworkDeploymentActions:
79 type: comma_delimited_list
81 Heat action when to apply network configuration changes
83 SoftwareConfigTransport:
84 default: POLL_SERVER_CFN
86 How the server should receive the metadata required for software configuration.
89 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
94 The DNS domain used for the hosts. This should match the dhcp_domain
95 configured in the Undercloud neutron. Defaults to localdomain.
99 Extra properties or metadata passed to Nova for the created nodes in
100 the overcloud. It's accessible via the Nova metadata API.
104 description: Optional scheduler hints to pass to nova
110 type: OS::Nova::Server
112 image: {get_param: Image}
113 flavor: {get_param: Flavor}
114 key_name: {get_param: KeyName}
117 user_data_format: SOFTWARE_CONFIG
118 user_data: {get_resource: UserData}
119 name: {get_param: Hostname}
120 software_config_transport: {get_param: SoftwareConfigTransport}
121 metadata: {get_param: ServerMetadata}
122 scheduler_hints: {get_param: SchedulerHints}
124 # Combine the NodeAdminUserData and NodeUserData mime archives
126 type: OS::Heat::MultipartMime
129 - config: {get_resource: NodeAdminUserData}
131 - config: {get_resource: NodeUserData}
134 # Creates the "heat-admin" user if configured via the environment
135 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
137 type: OS::TripleO::NodeAdminUserData
139 # For optional operator additional userdata
140 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
142 type: OS::TripleO::NodeUserData
145 type: OS::TripleO::SwiftStorage::Ports::ExternalPort
147 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
150 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
152 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
155 type: OS::TripleO::SwiftStorage::Ports::StoragePort
157 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
160 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
162 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
165 type: OS::TripleO::SwiftStorage::Ports::TenantPort
167 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
170 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
172 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
175 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
177 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
178 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
179 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
180 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
181 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
182 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
183 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
186 type: OS::TripleO::Network::Ports::NetIpMap
188 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
189 ExternalIp: {get_attr: [ExternalPort, ip_address]}
190 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
191 StorageIp: {get_attr: [StoragePort, ip_address]}
192 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
193 TenantIp: {get_attr: [TenantPort, ip_address]}
194 ManagementIp: {get_attr: [ManagementPort, ip_address]}
197 type: OS::TripleO::SoftwareDeployment
199 config: {get_resource: NetworkConfig}
200 server: {get_resource: SwiftStorage}
201 actions: {get_param: NetworkDeploymentActions}
203 SwiftStorageHieraConfig:
204 type: OS::Heat::StructuredConfig
206 group: os-apply-config
211 - heat_config_%{::deploy_config_name}
215 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
216 - all_nodes # provided by allNodesConfig
221 raw_data: {get_file: hieradata/common.yaml}
223 mapped_data: {get_param: ObjectStorageExtraConfig}
225 mapped_data: {get_param: ExtraConfig}
227 raw_data: {get_file: hieradata/object.yaml}
228 mapped_data: # data supplied directly to this deployment configuration, etc
229 swift::swift_hash_suffix: { get_input: swift_hash_suffix }
230 tripleo::ringbuilder::part_power: { get_input: swift_part_power }
231 tripleo::ringbuilder::replicas: {get_input: swift_replicas }
233 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
234 swift_mount_check: {get_input: swift_mount_check }
235 tripleo::ringbuilder::min_part_hours: { get_input: swift_min_part_hours }
236 ntp::servers: {get_input: ntp_servers}
237 # NOTE(dprince): build_ring support is currently not wired in.
238 # See: https://review.openstack.org/#/c/109225/
239 tripleo::ringbuilder::build_ring: True
240 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
241 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
242 tripleo::packages::enable_install: {get_input: enable_package_install}
243 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
246 SwiftStorageHieraDeploy:
247 type: OS::Heat::StructuredDeployment
248 depends_on: NetworkDeployment
250 server: {get_resource: SwiftStorage}
251 config: {get_resource: SwiftStorageHieraConfig}
253 local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
254 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
255 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
256 swift_hash_suffix: {get_param: HashSuffix}
257 swift_mount_check: {get_param: MountCheck}
258 swift_min_part_hours: {get_param: MinPartHours}
259 swift_part_power: {get_param: PartPower}
260 swift_replicas: { get_param: Replicas}
261 ntp_servers: {get_param: NtpServer}
262 enable_package_install: {get_param: EnablePackageInstall}
263 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
264 swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
266 # Resource for site-specific injection of root certificate
268 depends_on: SwiftStorageHieraDeploy
269 type: OS::TripleO::NodeTLSCAData
271 server: {get_resource: SwiftStorage}
273 # Hook for site-specific additional pre-deployment config,
274 # applying to all nodes, e.g node registration/unregistration
276 depends_on: NodeTLSCAData
277 type: OS::TripleO::NodeExtraConfig
279 server: {get_resource: SwiftStorage}
282 type: OS::TripleO::Tasks::PackageUpdate
285 type: OS::Heat::SoftwareDeployment
287 config: {get_resource: UpdateConfig}
288 server: {get_resource: SwiftStorage}
291 get_param: UpdateIdentifier
297 template: "IP HOST.DOMAIN HOST"
299 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
300 DOMAIN: {get_param: CloudDomain}
301 HOST: {get_attr: [SwiftStorage, name]}
302 nova_server_resource:
303 description: Heat resource handle for the swift storage server
305 {get_resource: SwiftStorage}
307 description: Swift device formatted for swift-ring-builder
310 template: 'r1z1-IP:%PORT%/d1'
312 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
314 description: IP address of the server in the external network
315 value: {get_attr: [ExternalPort, ip_address]}
316 internal_api_ip_address:
317 description: IP address of the server in the internal_api network
318 value: {get_attr: [InternalApiPort, ip_address]}
320 description: IP address of the server in the storage network
321 value: {get_attr: [StoragePort, ip_address]}
322 storage_mgmt_ip_address:
323 description: IP address of the server in the storage_mgmt network
324 value: {get_attr: [StorageMgmtPort, ip_address]}
326 description: IP address of the server in the tenant network
327 value: {get_attr: [TenantPort, ip_address]}
328 management_ip_address:
329 description: IP address of the server in the management network
330 value: {get_attr: [ManagementPort, ip_address]}
332 description: identifier which changes if the node configuration may need re-applying
336 - - {get_attr: [SwiftStorageHieraDeploy, deploy_stdout]}
337 - {get_attr: [NodeTLSCAData, deploy_stdout]}
338 - {get_param: UpdateIdentifier}