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::InternalApiPort
147 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
150 type: OS::TripleO::SwiftStorage::Ports::StoragePort
152 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
155 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
157 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
160 type: OS::TripleO::SwiftStorage::Ports::ManagementPort
162 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
165 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
167 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
168 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
169 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
170 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
171 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
174 type: OS::TripleO::Network::Ports::NetIpMap
176 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
177 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
178 StorageIp: {get_attr: [StoragePort, ip_address]}
179 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
180 ManagementIp: {get_attr: [ManagementPort, ip_address]}
183 type: OS::TripleO::SoftwareDeployment
185 config: {get_resource: NetworkConfig}
186 server: {get_resource: SwiftStorage}
187 actions: {get_param: NetworkDeploymentActions}
189 SwiftStorageHieraConfig:
190 type: OS::Heat::StructuredConfig
192 group: os-apply-config
197 - heat_config_%{::deploy_config_name}
201 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
202 - all_nodes # provided by allNodesConfig
207 raw_data: {get_file: hieradata/common.yaml}
209 mapped_data: {get_param: ObjectStorageExtraConfig}
211 mapped_data: {get_param: ExtraConfig}
213 raw_data: {get_file: hieradata/object.yaml}
214 mapped_data: # data supplied directly to this deployment configuration, etc
215 swift::swift_hash_suffix: { get_input: swift_hash_suffix }
216 tripleo::ringbuilder::part_power: { get_input: swift_part_power }
217 tripleo::ringbuilder::replicas: {get_input: swift_replicas }
219 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
220 swift_mount_check: {get_input: swift_mount_check }
221 tripleo::ringbuilder::min_part_hours: { get_input: swift_min_part_hours }
222 ntp::servers: {get_input: ntp_servers}
223 # NOTE(dprince): build_ring support is currently not wired in.
224 # See: https://review.openstack.org/#/c/109225/
225 tripleo::ringbuilder::build_ring: True
226 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
227 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
228 tripleo::packages::enable_install: {get_input: enable_package_install}
229 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
232 SwiftStorageHieraDeploy:
233 type: OS::Heat::StructuredDeployment
234 depends_on: NetworkDeployment
236 server: {get_resource: SwiftStorage}
237 config: {get_resource: SwiftStorageHieraConfig}
239 local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
240 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
241 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
242 swift_hash_suffix: {get_param: HashSuffix}
243 swift_mount_check: {get_param: MountCheck}
244 swift_min_part_hours: {get_param: MinPartHours}
245 swift_part_power: {get_param: PartPower}
246 swift_replicas: { get_param: Replicas}
247 ntp_servers: {get_param: NtpServer}
248 enable_package_install: {get_param: EnablePackageInstall}
249 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
250 swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
252 # Resource for site-specific injection of root certificate
254 depends_on: SwiftStorageHieraDeploy
255 type: OS::TripleO::NodeTLSCAData
257 server: {get_resource: SwiftStorage}
259 # Hook for site-specific additional pre-deployment config,
260 # applying to all nodes, e.g node registration/unregistration
262 depends_on: NodeTLSCAData
263 type: OS::TripleO::NodeExtraConfig
265 server: {get_resource: SwiftStorage}
268 type: OS::TripleO::Tasks::PackageUpdate
271 type: OS::Heat::SoftwareDeployment
273 config: {get_resource: UpdateConfig}
274 server: {get_resource: SwiftStorage}
277 get_param: UpdateIdentifier
283 template: "IP HOST.DOMAIN HOST"
285 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
286 DOMAIN: {get_param: CloudDomain}
287 HOST: {get_attr: [SwiftStorage, name]}
288 nova_server_resource:
289 description: Heat resource handle for the swift storage server
291 {get_resource: SwiftStorage}
293 description: Swift device formatted for swift-ring-builder
296 template: 'r1z1-IP:%PORT%/d1'
298 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
299 internal_api_ip_address:
300 description: IP address of the server in the internal_api network
301 value: {get_attr: [InternalApiPort, ip_address]}
303 description: IP address of the server in the storage network
304 value: {get_attr: [StoragePort, ip_address]}
305 storage_mgmt_ip_address:
306 description: IP address of the server in the storage_mgmt network
307 value: {get_attr: [StorageMgmtPort, ip_address]}
308 management_ip_address:
309 description: IP address of the server in the management network
310 value: {get_attr: [ManagementPort, ip_address]}
312 description: identifier which changes if the node configuration may need re-applying
316 - - {get_attr: [SwiftStorageHieraDeploy, deploy_stdout]}
317 - {get_attr: [NodeTLSCAData, deploy_stdout]}
318 - {get_param: UpdateIdentifier}