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 EC2 KeyPair 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
85 SoftwareConfigTransport:
86 default: POLL_SERVER_CFN
88 How the server should receive the metadata required for software configuration.
91 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
96 The DNS domain used for the hosts. This should match the dhcp_domain
97 configured in the Undercloud neutron. Defaults to localdomain.
101 Extra properties or metadata passed to Nova for the created nodes in
102 the overcloud. It's accessible via the Nova metadata API.
109 type: OS::Nova::Server
111 image: {get_param: Image}
112 flavor: {get_param: Flavor}
113 key_name: {get_param: KeyName}
116 user_data_format: SOFTWARE_CONFIG
117 user_data: {get_resource: UserData}
118 name: {get_param: Hostname}
119 software_config_transport: {get_param: SoftwareConfigTransport}
120 metadata: {get_param: ServerMetadata}
122 # Combine the NodeAdminUserData and NodeUserData mime archives
124 type: OS::Heat::MultipartMime
127 - config: {get_resource: NodeAdminUserData}
129 - config: {get_resource: NodeUserData}
132 # Creates the "heat-admin" user if configured via the environment
133 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
135 type: OS::TripleO::NodeAdminUserData
137 # For optional operator additional userdata
138 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
140 type: OS::TripleO::NodeUserData
143 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
145 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
148 type: OS::TripleO::SwiftStorage::Ports::StoragePort
150 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
153 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
155 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
158 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
160 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
161 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
162 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
163 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
166 type: OS::TripleO::Network::Ports::NetIpMap
168 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
169 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
170 StorageIp: {get_attr: [StoragePort, ip_address]}
171 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
174 type: OS::TripleO::SoftwareDeployment
176 config: {get_resource: NetworkConfig}
177 server: {get_resource: SwiftStorage}
178 actions: {get_param: NetworkDeploymentActions}
180 SwiftStorageHieraConfig:
181 type: OS::Heat::StructuredConfig
183 group: os-apply-config
188 - heat_config_%{::deploy_config_name}
192 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
193 - all_nodes # provided by allNodesConfig
198 raw_data: {get_file: hieradata/common.yaml}
200 mapped_data: {get_param: ObjectStorageExtraConfig}
202 mapped_data: {get_param: ExtraConfig}
204 raw_data: {get_file: hieradata/object.yaml}
205 mapped_data: # data supplied directly to this deployment configuration, etc
206 swift::swift_hash_suffix: { get_input: swift_hash_suffix }
207 tripleo::ringbuilder::part_power: { get_input: swift_part_power }
208 tripleo::ringbuilder::replicas: {get_input: swift_replicas }
210 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
211 swift_mount_check: {get_input: swift_mount_check }
212 tripleo::ringbuilder::min_part_hours: { get_input: swift_min_part_hours }
213 ntp::servers: {get_input: ntp_servers}
214 # NOTE(dprince): build_ring support is currently not wired in.
215 # See: https://review.openstack.org/#/c/109225/
216 tripleo::ringbuilder::build_ring: True
217 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
218 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
219 tripleo::packages::enable_install: {get_input: enable_package_install}
220 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
223 SwiftStorageHieraDeploy:
224 type: OS::Heat::StructuredDeployment
225 depends_on: NetworkDeployment
227 server: {get_resource: SwiftStorage}
228 config: {get_resource: SwiftStorageHieraConfig}
230 local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
231 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
232 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
233 swift_hash_suffix: {get_param: HashSuffix}
234 swift_mount_check: {get_param: MountCheck}
235 swift_min_part_hours: {get_param: MinPartHours}
236 swift_part_power: {get_param: PartPower}
237 swift_replicas: { get_param: Replicas}
238 ntp_servers: {get_param: NtpServer}
239 enable_package_install: {get_param: EnablePackageInstall}
240 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
241 swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
243 # Resource for site-specific injection of root certificate
245 depends_on: SwiftStorageHieraDeploy
246 type: OS::TripleO::NodeTLSCAData
248 server: {get_resource: SwiftStorage}
250 # Hook for site-specific additional pre-deployment config,
251 # applying to all nodes, e.g node registration/unregistration
253 depends_on: NodeTLSCAData
254 type: OS::TripleO::NodeExtraConfig
256 server: {get_resource: SwiftStorage}
259 type: OS::TripleO::Tasks::PackageUpdate
262 type: OS::Heat::SoftwareDeployment
264 config: {get_resource: UpdateConfig}
265 server: {get_resource: SwiftStorage}
268 get_param: UpdateIdentifier
274 template: "IP HOST.DOMAIN HOST"
276 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
277 DOMAIN: {get_param: CloudDomain}
278 HOST: {get_attr: [SwiftStorage, name]}
279 nova_server_resource:
280 description: Heat resource handle for the swift storage server
282 {get_resource: SwiftStorage}
284 description: Swift device formatted for swift-ring-builder
287 template: 'r1z1-IP:%PORT%/d1'
289 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
290 internal_api_ip_address:
291 description: IP address of the server in the internal_api network
292 value: {get_attr: [InternalApiPort, ip_address]}
294 description: IP address of the server in the storage network
295 value: {get_attr: [StoragePort, ip_address]}
296 storage_mgmt_ip_address:
297 description: IP address of the server in the storage_mgmt network
298 value: {get_attr: [StorageMgmtPort, ip_address]}
300 description: identifier which changes if the node configuration may need re-applying
304 - - {get_attr: [SwiftStorageHieraDeploy, deploy_stdout]}
305 - {get_attr: [NodeTLSCAData, deploy_stdout]}
306 - {get_param: UpdateIdentifier}