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 EC2 KeyPair 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
87 The DNS domain used for the hosts. This should match the dhcp_domain
88 configured in the Undercloud neutron. Defaults to localdomain.
92 Extra properties or metadata passed to Nova for the created nodes in
93 the overcloud. It's accessible via the Nova metadata API.
100 type: OS::Nova::Server
102 image: {get_param: Image}
103 flavor: {get_param: Flavor}
104 key_name: {get_param: KeyName}
107 user_data_format: SOFTWARE_CONFIG
108 user_data: {get_resource: UserData}
109 name: {get_param: Hostname}
110 metadata: {get_param: ServerMetadata}
112 # Combine the NodeAdminUserData and NodeUserData mime archives
114 type: OS::Heat::MultipartMime
117 - config: {get_resource: NodeAdminUserData}
119 - config: {get_resource: NodeUserData}
122 # Creates the "heat-admin" user if configured via the environment
123 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
125 type: OS::TripleO::NodeAdminUserData
127 # For optional operator additional userdata
128 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
130 type: OS::TripleO::NodeUserData
133 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
135 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
138 type: OS::TripleO::SwiftStorage::Ports::StoragePort
140 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
143 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
145 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
148 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
150 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
151 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
152 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
153 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
156 type: OS::TripleO::Network::Ports::NetIpMap
158 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
159 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
160 StorageIp: {get_attr: [StoragePort, ip_address]}
161 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
164 type: OS::TripleO::SoftwareDeployment
166 config: {get_resource: NetworkConfig}
167 server: {get_resource: SwiftStorage}
168 actions: {get_param: NetworkDeploymentActions}
170 SwiftStorageHieraConfig:
171 type: OS::Heat::StructuredConfig
173 group: os-apply-config
178 - heat_config_%{::deploy_config_name}
182 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
183 - all_nodes # provided by allNodesConfig
188 raw_data: {get_file: hieradata/common.yaml}
190 mapped_data: {get_param: ObjectStorageExtraConfig}
192 mapped_data: {get_param: ExtraConfig}
194 raw_data: {get_file: hieradata/object.yaml}
195 mapped_data: # data supplied directly to this deployment configuration, etc
196 swift::swift_hash_suffix: { get_input: swift_hash_suffix }
197 tripleo::ringbuilder::part_power: { get_input: swift_part_power }
198 tripleo::ringbuilder::replicas: {get_input: swift_replicas }
200 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
201 swift_mount_check: {get_input: swift_mount_check }
202 tripleo::ringbuilder::min_part_hours: { get_input: swift_min_part_hours }
203 ntp::servers: {get_input: ntp_servers}
204 # NOTE(dprince): build_ring support is currently not wired in.
205 # See: https://review.openstack.org/#/c/109225/
206 tripleo::ringbuilder::build_ring: True
207 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
208 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
209 tripleo::packages::enable_install: {get_input: enable_package_install}
210 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
213 SwiftStorageHieraDeploy:
214 type: OS::Heat::StructuredDeployment
215 depends_on: NetworkDeployment
217 server: {get_resource: SwiftStorage}
218 config: {get_resource: SwiftStorageHieraConfig}
220 local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
221 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
222 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
223 swift_hash_suffix: {get_param: HashSuffix}
224 swift_mount_check: {get_param: MountCheck}
225 swift_min_part_hours: {get_param: MinPartHours}
226 swift_part_power: {get_param: PartPower}
227 swift_replicas: { get_param: Replicas}
228 ntp_servers: {get_param: NtpServer}
229 enable_package_install: {get_param: EnablePackageInstall}
230 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
231 swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
233 # Resource for site-specific injection of root certificate
235 depends_on: SwiftStorageHieraDeploy
236 type: OS::TripleO::NodeTLSCAData
238 server: {get_resource: SwiftStorage}
240 # Hook for site-specific additional pre-deployment config,
241 # applying to all nodes, e.g node registration/unregistration
243 depends_on: NodeTLSCAData
244 type: OS::TripleO::NodeExtraConfig
246 server: {get_resource: SwiftStorage}
249 type: OS::TripleO::Tasks::PackageUpdate
252 type: OS::Heat::SoftwareDeployment
254 config: {get_resource: UpdateConfig}
255 server: {get_resource: SwiftStorage}
258 get_param: UpdateIdentifier
264 template: "IP HOST.DOMAIN HOST"
266 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
267 DOMAIN: {get_param: CloudDomain}
268 HOST: {get_attr: [SwiftStorage, name]}
269 nova_server_resource:
270 description: Heat resource handle for the swift storage server
272 {get_resource: SwiftStorage}
274 description: Swift device formatted for swift-ring-builder
277 template: 'r1z1-IP:%PORT%/d1'
279 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
280 internal_api_ip_address:
281 description: IP address of the server in the internal_api network
282 value: {get_attr: [InternalApiPort, ip_address]}
284 description: IP address of the server in the storage network
285 value: {get_attr: [StoragePort, ip_address]}
286 storage_mgmt_ip_address:
287 description: IP address of the server in the storage_mgmt network
288 value: {get_attr: [StorageMgmtPort, ip_address]}
290 description: identifier which changes if the node configuration may need re-applying
294 - - {get_attr: [SwiftStorageHieraDeploy, deploy_stdout]}
295 - {get_attr: [NodeTLSCAData, deploy_stdout]}
296 - {get_param: UpdateIdentifier}