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::ObjectStorage::Net::SoftwareConfig
162 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
163 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
164 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
165 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
168 type: OS::TripleO::Network::Ports::NetIpMap
170 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
171 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
172 StorageIp: {get_attr: [StoragePort, ip_address]}
173 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
176 type: OS::TripleO::SoftwareDeployment
178 config: {get_resource: NetworkConfig}
179 server: {get_resource: SwiftStorage}
180 actions: {get_param: NetworkDeploymentActions}
182 SwiftStorageHieraConfig:
183 type: OS::Heat::StructuredConfig
185 group: os-apply-config
190 - heat_config_%{::deploy_config_name}
194 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
195 - all_nodes # provided by allNodesConfig
200 raw_data: {get_file: hieradata/common.yaml}
202 mapped_data: {get_param: ObjectStorageExtraConfig}
204 mapped_data: {get_param: ExtraConfig}
206 raw_data: {get_file: hieradata/object.yaml}
207 mapped_data: # data supplied directly to this deployment configuration, etc
208 swift::swift_hash_suffix: { get_input: swift_hash_suffix }
209 tripleo::ringbuilder::part_power: { get_input: swift_part_power }
210 tripleo::ringbuilder::replicas: {get_input: swift_replicas }
212 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
213 swift_mount_check: {get_input: swift_mount_check }
214 tripleo::ringbuilder::min_part_hours: { get_input: swift_min_part_hours }
215 ntp::servers: {get_input: ntp_servers}
216 # NOTE(dprince): build_ring support is currently not wired in.
217 # See: https://review.openstack.org/#/c/109225/
218 tripleo::ringbuilder::build_ring: True
219 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
220 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
221 tripleo::packages::enable_install: {get_input: enable_package_install}
222 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
225 SwiftStorageHieraDeploy:
226 type: OS::Heat::StructuredDeployment
227 depends_on: NetworkDeployment
229 server: {get_resource: SwiftStorage}
230 config: {get_resource: SwiftStorageHieraConfig}
232 local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
233 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
234 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
235 swift_hash_suffix: {get_param: HashSuffix}
236 swift_mount_check: {get_param: MountCheck}
237 swift_min_part_hours: {get_param: MinPartHours}
238 swift_part_power: {get_param: PartPower}
239 swift_replicas: { get_param: Replicas}
240 ntp_servers: {get_param: NtpServer}
241 enable_package_install: {get_param: EnablePackageInstall}
242 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
243 swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
245 # Resource for site-specific injection of root certificate
247 depends_on: SwiftStorageHieraDeploy
248 type: OS::TripleO::NodeTLSCAData
250 server: {get_resource: SwiftStorage}
252 # Hook for site-specific additional pre-deployment config,
253 # applying to all nodes, e.g node registration/unregistration
255 depends_on: NodeTLSCAData
256 type: OS::TripleO::NodeExtraConfig
258 server: {get_resource: SwiftStorage}
261 type: OS::TripleO::Tasks::PackageUpdate
264 type: OS::Heat::SoftwareDeployment
266 config: {get_resource: UpdateConfig}
267 server: {get_resource: SwiftStorage}
270 get_param: UpdateIdentifier
276 template: "IP HOST.DOMAIN HOST"
278 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
279 DOMAIN: {get_param: CloudDomain}
280 HOST: {get_attr: [SwiftStorage, name]}
281 nova_server_resource:
282 description: Heat resource handle for the swift storage server
284 {get_resource: SwiftStorage}
286 description: Swift device formatted for swift-ring-builder
289 template: 'r1z1-IP:%PORT%/d1'
291 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
292 internal_api_ip_address:
293 description: IP address of the server in the internal_api network
294 value: {get_attr: [InternalApiPort, ip_address]}
296 description: IP address of the server in the storage network
297 value: {get_attr: [StoragePort, ip_address]}
298 storage_mgmt_ip_address:
299 description: IP address of the server in the storage_mgmt network
300 value: {get_attr: [StorageMgmtPort, ip_address]}
302 description: identifier which changes if the node configuration may need re-applying
306 - - {get_attr: [SwiftStorageHieraDeploy, deploy_stdout]}
307 - {get_attr: [NodeTLSCAData, deploy_stdout]}
308 - {get_param: UpdateIdentifier}