1 heat_template_version: 2016-10-14
2 description: 'OpenStack cinder storage configured by Puppet'
5 default: overcloud-full
8 - custom_constraint: glance.image
12 Additional hiera configuration to inject into the cluster. Note
13 that BlockStorageExtraConfig takes precedence over ExtraConfig.
15 BlockStorageExtraConfig:
18 Role specific additional hiera configuration to inject into the cluster.
23 OvercloudBlockStorageFlavor:
24 description: Flavor for block storage nodes to request when deploying.
28 - custom_constraint: nova.flavor
31 description: Name of an existing Nova key pair to enable SSH access to the instances
33 SnmpdReadonlyUserName:
35 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
37 SnmpdReadonlyUserPassword:
38 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
45 Setting to a previously unused value during stack-update will trigger
46 package update on all nodes
49 default: '' # Defaults to Heat created hostname
53 description: Optional mapping to override hostnames
56 description: Mapping of service_name -> network name. Typically set
57 via parameter_defaults in the resource registry.
59 NetworkDeploymentActions:
60 type: comma_delimited_list
62 Heat action when to apply network configuration changes
64 SoftwareConfigTransport:
65 default: POLL_SERVER_CFN
67 How the server should receive the metadata required for software configuration.
70 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
74 The DNS domain used for the hosts. This should match the dhcp_domain
75 configured in the Undercloud neutron. Defaults to localdomain.
79 Extra properties or metadata passed to Nova for the created nodes in
80 the overcloud. It's accessible via the Nova metadata API.
82 BlockStorageSchedulerHints:
84 description: Optional scheduler hints to pass to nova
89 ServiceConfigSettings:
93 type: comma_delimited_list
95 MonitoringSubscriptions:
96 type: comma_delimited_list
100 description: Command which will be run whenever configuration data changes
101 default: os-refresh-config --timeout 14400
105 type: OS::TripleO::Server
108 command: {get_param: ConfigCommand}
111 {get_param: BlockStorageImage}
112 flavor: {get_param: OvercloudBlockStorageFlavor}
113 key_name: {get_param: KeyName}
116 user_data_format: SOFTWARE_CONFIG
117 user_data: {get_resource: UserData}
120 template: {get_param: Hostname}
121 params: {get_param: HostnameMap}
122 software_config_transport: {get_param: SoftwareConfigTransport}
123 metadata: {get_param: ServerMetadata}
124 scheduler_hints: {get_param: BlockStorageSchedulerHints}
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::BlockStorage::Ports::ExternalPort
149 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
150 IPPool: {get_param: BlockStorageIPs}
151 NodeIndex: {get_param: NodeIndex}
154 type: OS::TripleO::BlockStorage::Ports::InternalApiPort
156 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
157 IPPool: {get_param: BlockStorageIPs}
158 NodeIndex: {get_param: NodeIndex}
161 type: OS::TripleO::BlockStorage::Ports::StoragePort
163 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
164 IPPool: {get_param: BlockStorageIPs}
165 NodeIndex: {get_param: NodeIndex}
168 type: OS::TripleO::BlockStorage::Ports::StorageMgmtPort
170 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
171 IPPool: {get_param: BlockStorageIPs}
172 NodeIndex: {get_param: NodeIndex}
175 type: OS::TripleO::BlockStorage::Ports::TenantPort
177 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
178 IPPool: {get_param: BlockStorageIPs}
179 NodeIndex: {get_param: NodeIndex}
182 type: OS::TripleO::BlockStorage::Ports::ManagementPort
184 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
185 IPPool: {get_param: BlockStorageIPs}
186 NodeIndex: {get_param: NodeIndex}
189 type: OS::TripleO::BlockStorage::Net::SoftwareConfig
191 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
192 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
193 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
194 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
195 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
196 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
197 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
200 type: OS::TripleO::Network::Ports::NetIpMap
202 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
203 ExternalIp: {get_attr: [ExternalPort, ip_address]}
204 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
205 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
206 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
207 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
208 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
209 StorageIp: {get_attr: [StoragePort, ip_address]}
210 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
211 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
212 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
213 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
214 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
215 TenantIp: {get_attr: [TenantPort, ip_address]}
216 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
217 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
218 ManagementIp: {get_attr: [ManagementPort, ip_address]}
219 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
220 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
223 type: OS::TripleO::SoftwareDeployment
225 name: NetworkDeployment
226 config: {get_resource: NetworkConfig}
227 server: {get_resource: BlockStorage}
228 actions: {get_param: NetworkDeploymentActions}
230 BlockStorageDeployment:
231 type: OS::Heat::StructuredDeployment
232 depends_on: NetworkDeployment
234 name: BlockStorageDeployment
235 server: {get_resource: BlockStorage}
236 config: {get_resource: BlockStorageConfig}
238 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
239 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
240 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
242 # Map heat metadata into hiera datafiles
244 type: OS::Heat::StructuredConfig
246 group: os-apply-config
251 - heat_config_%{::deploy_config_name}
257 - all_nodes # provided by allNodesConfig
259 merge_behavior: deeper
263 service_names: {get_param: ServiceNames}
264 sensu::subscriptions: {get_param: MonitoringSubscriptions}
268 - {get_param: ServiceConfigSettings}
269 - values: {get_attr: [NetIpMap, net_ip_map]}
271 mapped_data: {get_param: BlockStorageExtraConfig}
273 mapped_data: {get_param: ExtraConfig}
276 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
277 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
278 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
280 # Resource for site-specific injection of root certificate
282 depends_on: BlockStorageDeployment
283 type: OS::TripleO::NodeTLSCAData
285 server: {get_resource: BlockStorage}
287 # Hook for site-specific additional pre-deployment config,
288 # applying to all nodes, e.g node registration/unregistration
290 depends_on: NodeTLSCAData
291 type: OS::TripleO::NodeExtraConfig
293 server: {get_resource: BlockStorage}
296 type: OS::TripleO::Tasks::PackageUpdate
299 type: OS::Heat::SoftwareDeployment
301 name: UpdateDeployment
302 config: {get_resource: UpdateConfig}
303 server: {get_resource: BlockStorage}
306 get_param: UpdateIdentifier
310 description: IP address of the server in the ctlplane network
311 value: {get_attr: [BlockStorage, networks, ctlplane, 0]}
313 description: Hostname of the server
314 value: {get_attr: [BlockStorage, name]}
319 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
320 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
321 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
322 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
323 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
324 TENANTIP TENANTHOST.DOMAIN TENANTHOST
325 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
327 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
328 DOMAIN: {get_param: CloudDomain}
329 PRIMARYHOST: {get_attr: [BlockStorage, name]}
330 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
334 - - {get_attr: [BlockStorage, name]}
336 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
340 - - {get_attr: [BlockStorage, name]}
342 STORAGEIP: {get_attr: [StoragePort, ip_address]}
346 - - {get_attr: [BlockStorage, name]}
348 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
352 - - {get_attr: [BlockStorage, name]}
354 TENANTIP: {get_attr: [TenantPort, ip_address]}
358 - - {get_attr: [BlockStorage, name]}
360 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
364 - - {get_attr: [BlockStorage, name]}
366 nova_server_resource:
367 description: Heat resource handle for the block storage server
369 {get_resource: BlockStorage}
371 description: IP address of the server in the external network
372 value: {get_attr: [ExternalPort, ip_address]}
373 internal_api_ip_address:
374 description: IP address of the server in the internal_api network
375 value: {get_attr: [InternalApiPort, ip_address]}
377 description: IP address of the server in the storage network
378 value: {get_attr: [StoragePort, ip_address]}
379 storage_mgmt_ip_address:
380 description: IP address of the server in the storage_mgmt network
381 value: {get_attr: [StorageMgmtPort, ip_address]}
383 description: IP address of the server in the tenant network
384 value: {get_attr: [TenantPort, ip_address]}
385 management_ip_address:
386 description: IP address of the server in the management network
387 value: {get_attr: [ManagementPort, ip_address]}