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 Nova key pair 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
89 The DNS domain used for the hosts. This should match the dhcp_domain
90 configured in the Undercloud neutron. Defaults to localdomain.
94 Extra properties or metadata passed to Nova for the created nodes in
95 the overcloud. It's accessible via the Nova metadata API.
99 description: Optional scheduler hints to pass to nova
105 type: OS::Nova::Server
107 image: {get_param: Image}
108 flavor: {get_param: Flavor}
109 key_name: {get_param: KeyName}
112 user_data_format: SOFTWARE_CONFIG
113 user_data: {get_resource: UserData}
114 name: {get_param: Hostname}
115 metadata: {get_param: ServerMetadata}
116 scheduler_hints: {get_param: SchedulerHints}
118 # Combine the NodeAdminUserData and NodeUserData mime archives
120 type: OS::Heat::MultipartMime
123 - config: {get_resource: NodeAdminUserData}
125 - config: {get_resource: NodeUserData}
128 # Creates the "heat-admin" user if configured via the environment
129 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
131 type: OS::TripleO::NodeAdminUserData
133 # For optional operator additional userdata
134 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
136 type: OS::TripleO::NodeUserData
139 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
141 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
144 type: OS::TripleO::SwiftStorage::Ports::StoragePort
146 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
149 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
151 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
154 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
156 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
157 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
158 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
159 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
162 type: OS::TripleO::Network::Ports::NetIpMap
164 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
165 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
166 StorageIp: {get_attr: [StoragePort, ip_address]}
167 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
170 type: OS::TripleO::SoftwareDeployment
172 config: {get_resource: NetworkConfig}
173 server: {get_resource: SwiftStorage}
174 actions: {get_param: NetworkDeploymentActions}
176 SwiftStorageHieraConfig:
177 type: OS::Heat::StructuredConfig
179 group: os-apply-config
184 - heat_config_%{::deploy_config_name}
188 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
189 - all_nodes # provided by allNodesConfig
194 raw_data: {get_file: hieradata/common.yaml}
196 mapped_data: {get_param: ObjectStorageExtraConfig}
198 mapped_data: {get_param: ExtraConfig}
200 raw_data: {get_file: hieradata/object.yaml}
201 mapped_data: # data supplied directly to this deployment configuration, etc
202 swift::swift_hash_suffix: { get_input: swift_hash_suffix }
203 tripleo::ringbuilder::part_power: { get_input: swift_part_power }
204 tripleo::ringbuilder::replicas: {get_input: swift_replicas }
206 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
207 swift_mount_check: {get_input: swift_mount_check }
208 tripleo::ringbuilder::min_part_hours: { get_input: swift_min_part_hours }
209 ntp::servers: {get_input: ntp_servers}
210 # NOTE(dprince): build_ring support is currently not wired in.
211 # See: https://review.openstack.org/#/c/109225/
212 tripleo::ringbuilder::build_ring: True
213 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
214 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
215 tripleo::packages::enable_install: {get_input: enable_package_install}
216 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
219 SwiftStorageHieraDeploy:
220 type: OS::Heat::StructuredDeployment
221 depends_on: NetworkDeployment
223 server: {get_resource: SwiftStorage}
224 config: {get_resource: SwiftStorageHieraConfig}
226 local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
227 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
228 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
229 swift_hash_suffix: {get_param: HashSuffix}
230 swift_mount_check: {get_param: MountCheck}
231 swift_min_part_hours: {get_param: MinPartHours}
232 swift_part_power: {get_param: PartPower}
233 swift_replicas: { get_param: Replicas}
234 ntp_servers: {get_param: NtpServer}
235 enable_package_install: {get_param: EnablePackageInstall}
236 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
237 swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
239 # Resource for site-specific injection of root certificate
241 depends_on: SwiftStorageHieraDeploy
242 type: OS::TripleO::NodeTLSCAData
244 server: {get_resource: SwiftStorage}
246 # Hook for site-specific additional pre-deployment config,
247 # applying to all nodes, e.g node registration/unregistration
249 depends_on: NodeTLSCAData
250 type: OS::TripleO::NodeExtraConfig
252 server: {get_resource: SwiftStorage}
255 type: OS::TripleO::Tasks::PackageUpdate
258 type: OS::Heat::SoftwareDeployment
260 config: {get_resource: UpdateConfig}
261 server: {get_resource: SwiftStorage}
264 get_param: UpdateIdentifier
270 template: "IP HOST.DOMAIN HOST"
272 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
273 DOMAIN: {get_param: CloudDomain}
274 HOST: {get_attr: [SwiftStorage, name]}
275 nova_server_resource:
276 description: Heat resource handle for the swift storage server
278 {get_resource: SwiftStorage}
280 description: Swift device formatted for swift-ring-builder
283 template: 'r1z1-IP:%PORT%/d1'
285 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
286 internal_api_ip_address:
287 description: IP address of the server in the internal_api network
288 value: {get_attr: [InternalApiPort, ip_address]}
290 description: IP address of the server in the storage network
291 value: {get_attr: [StoragePort, ip_address]}
292 storage_mgmt_ip_address:
293 description: IP address of the server in the storage_mgmt network
294 value: {get_attr: [StorageMgmtPort, ip_address]}
296 description: identifier which changes if the node configuration may need re-applying
300 - - {get_attr: [SwiftStorageHieraDeploy, deploy_stdout]}
301 - {get_attr: [NodeTLSCAData, deploy_stdout]}
302 - {get_param: UpdateIdentifier}