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
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.
106 description: Optional scheduler hints to pass to nova
112 type: OS::Nova::Server
114 image: {get_param: Image}
115 flavor: {get_param: Flavor}
116 key_name: {get_param: KeyName}
119 user_data_format: SOFTWARE_CONFIG
120 user_data: {get_resource: UserData}
121 name: {get_param: Hostname}
122 software_config_transport: {get_param: SoftwareConfigTransport}
123 metadata: {get_param: ServerMetadata}
124 scheduler_hints: {get_param: SchedulerHints}
126 # Combine the NodeAdminUserData and NodeUserData mime archives
128 type: OS::Heat::MultipartMime
131 - config: {get_resource: NodeAdminUserData}
133 - config: {get_resource: NodeUserData}
136 # Creates the "heat-admin" user if configured via the environment
137 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
139 type: OS::TripleO::NodeAdminUserData
141 # For optional operator additional userdata
142 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
144 type: OS::TripleO::NodeUserData
147 type: OS::TripleO::SwiftStorage::Ports::InternalApiPort
149 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
152 type: OS::TripleO::SwiftStorage::Ports::StoragePort
154 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
157 type: OS::TripleO::SwiftStorage::Ports::StorageMgmtPort
159 ControlPlaneIP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
162 type: OS::TripleO::ObjectStorage::Net::SoftwareConfig
164 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
165 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
166 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
167 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
170 type: OS::TripleO::Network::Ports::NetIpMap
172 ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
173 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
174 StorageIp: {get_attr: [StoragePort, ip_address]}
175 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
178 type: OS::TripleO::SoftwareDeployment
180 config: {get_resource: NetworkConfig}
181 server: {get_resource: SwiftStorage}
182 actions: {get_param: NetworkDeploymentActions}
184 SwiftStorageHieraConfig:
185 type: OS::Heat::StructuredConfig
187 group: os-apply-config
192 - heat_config_%{::deploy_config_name}
196 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
197 - all_nodes # provided by allNodesConfig
202 raw_data: {get_file: hieradata/common.yaml}
204 mapped_data: {get_param: ObjectStorageExtraConfig}
206 mapped_data: {get_param: ExtraConfig}
208 raw_data: {get_file: hieradata/object.yaml}
209 mapped_data: # data supplied directly to this deployment configuration, etc
210 swift::swift_hash_suffix: { get_input: swift_hash_suffix }
211 tripleo::ringbuilder::part_power: { get_input: swift_part_power }
212 tripleo::ringbuilder::replicas: {get_input: swift_replicas }
214 swift::storage::all::storage_local_net_ip: {get_input: swift_management_network}
215 swift_mount_check: {get_input: swift_mount_check }
216 tripleo::ringbuilder::min_part_hours: { get_input: swift_min_part_hours }
217 ntp::servers: {get_input: ntp_servers}
218 # NOTE(dprince): build_ring support is currently not wired in.
219 # See: https://review.openstack.org/#/c/109225/
220 tripleo::ringbuilder::build_ring: True
221 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
222 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
223 tripleo::packages::enable_install: {get_input: enable_package_install}
224 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
227 SwiftStorageHieraDeploy:
228 type: OS::Heat::StructuredDeployment
229 depends_on: NetworkDeployment
231 server: {get_resource: SwiftStorage}
232 config: {get_resource: SwiftStorageHieraConfig}
234 local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
235 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
236 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
237 swift_hash_suffix: {get_param: HashSuffix}
238 swift_mount_check: {get_param: MountCheck}
239 swift_min_part_hours: {get_param: MinPartHours}
240 swift_part_power: {get_param: PartPower}
241 swift_replicas: { get_param: Replicas}
242 ntp_servers: {get_param: NtpServer}
243 enable_package_install: {get_param: EnablePackageInstall}
244 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
245 swift_management_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
247 # Resource for site-specific injection of root certificate
249 depends_on: SwiftStorageHieraDeploy
250 type: OS::TripleO::NodeTLSCAData
252 server: {get_resource: SwiftStorage}
254 # Hook for site-specific additional pre-deployment config,
255 # applying to all nodes, e.g node registration/unregistration
257 depends_on: NodeTLSCAData
258 type: OS::TripleO::NodeExtraConfig
260 server: {get_resource: SwiftStorage}
263 type: OS::TripleO::Tasks::PackageUpdate
266 type: OS::Heat::SoftwareDeployment
268 config: {get_resource: UpdateConfig}
269 server: {get_resource: SwiftStorage}
272 get_param: UpdateIdentifier
278 template: "IP HOST.DOMAIN HOST"
280 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
281 DOMAIN: {get_param: CloudDomain}
282 HOST: {get_attr: [SwiftStorage, name]}
283 nova_server_resource:
284 description: Heat resource handle for the swift storage server
286 {get_resource: SwiftStorage}
288 description: Swift device formatted for swift-ring-builder
291 template: 'r1z1-IP:%PORT%/d1'
293 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, SwiftMgmtNetwork]}]}
294 internal_api_ip_address:
295 description: IP address of the server in the internal_api network
296 value: {get_attr: [InternalApiPort, ip_address]}
298 description: IP address of the server in the storage network
299 value: {get_attr: [StoragePort, ip_address]}
300 storage_mgmt_ip_address:
301 description: IP address of the server in the storage_mgmt network
302 value: {get_attr: [StorageMgmtPort, ip_address]}
304 description: identifier which changes if the node configuration may need re-applying
308 - - {get_attr: [SwiftStorageHieraDeploy, deploy_stdout]}
309 - {get_attr: [NodeTLSCAData, deploy_stdout]}
310 - {get_param: UpdateIdentifier}