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
37 Setting to a previously unused value during stack-update will trigger
38 package update on all nodes
41 default: '' # Defaults to Heat created hostname
45 description: Optional mapping to override hostnames
48 description: Mapping of service_name -> network name. Typically set
49 via parameter_defaults in the resource registry.
51 NetworkDeploymentActions:
52 type: comma_delimited_list
54 Heat action when to apply network configuration changes
56 SoftwareConfigTransport:
57 default: POLL_SERVER_CFN
59 How the server should receive the metadata required for software configuration.
62 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
66 The DNS domain used for the hosts. This should match the dhcp_domain
67 configured in the Undercloud neutron. Defaults to localdomain.
71 Extra properties or metadata passed to Nova for the created nodes in
72 the overcloud. It's accessible via the Nova metadata API.
74 BlockStorageSchedulerHints:
76 description: Optional scheduler hints to pass to nova
81 ServiceConfigSettings:
85 type: comma_delimited_list
87 MonitoringSubscriptions:
88 type: comma_delimited_list
92 description: Command which will be run whenever configuration data changes
93 default: os-refresh-config --timeout 14400
97 type: OS::TripleO::Server
100 command: {get_param: ConfigCommand}
103 {get_param: BlockStorageImage}
104 flavor: {get_param: OvercloudBlockStorageFlavor}
105 key_name: {get_param: KeyName}
108 user_data_format: SOFTWARE_CONFIG
109 user_data: {get_resource: UserData}
112 template: {get_param: Hostname}
113 params: {get_param: HostnameMap}
114 software_config_transport: {get_param: SoftwareConfigTransport}
115 metadata: {get_param: ServerMetadata}
116 scheduler_hints: {get_param: BlockStorageSchedulerHints}
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::BlockStorage::Ports::ExternalPort
141 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
142 IPPool: {get_param: BlockStorageIPs}
143 NodeIndex: {get_param: NodeIndex}
146 type: OS::TripleO::BlockStorage::Ports::InternalApiPort
148 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
149 IPPool: {get_param: BlockStorageIPs}
150 NodeIndex: {get_param: NodeIndex}
153 type: OS::TripleO::BlockStorage::Ports::StoragePort
155 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
156 IPPool: {get_param: BlockStorageIPs}
157 NodeIndex: {get_param: NodeIndex}
160 type: OS::TripleO::BlockStorage::Ports::StorageMgmtPort
162 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
163 IPPool: {get_param: BlockStorageIPs}
164 NodeIndex: {get_param: NodeIndex}
167 type: OS::TripleO::BlockStorage::Ports::TenantPort
169 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
170 IPPool: {get_param: BlockStorageIPs}
171 NodeIndex: {get_param: NodeIndex}
174 type: OS::TripleO::BlockStorage::Ports::ManagementPort
176 ControlPlaneIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
177 IPPool: {get_param: BlockStorageIPs}
178 NodeIndex: {get_param: NodeIndex}
181 type: OS::TripleO::BlockStorage::Net::SoftwareConfig
183 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
184 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
185 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
186 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
187 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
188 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
189 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
192 type: OS::TripleO::Network::Ports::NetIpMap
194 ControlPlaneIp: {get_attr: [BlockStorage, networks, ctlplane, 0]}
195 ExternalIp: {get_attr: [ExternalPort, ip_address]}
196 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
197 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
198 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
199 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
200 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
201 StorageIp: {get_attr: [StoragePort, ip_address]}
202 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
203 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
204 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
205 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
206 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
207 TenantIp: {get_attr: [TenantPort, ip_address]}
208 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
209 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
210 ManagementIp: {get_attr: [ManagementPort, ip_address]}
211 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
212 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
215 type: OS::TripleO::SoftwareDeployment
217 name: NetworkDeployment
218 config: {get_resource: NetworkConfig}
219 server: {get_resource: BlockStorage}
220 actions: {get_param: NetworkDeploymentActions}
222 BlockStorageDeployment:
223 type: OS::Heat::StructuredDeployment
224 depends_on: NetworkDeployment
226 name: BlockStorageDeployment
227 server: {get_resource: BlockStorage}
228 config: {get_resource: BlockStorageConfig}
230 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
232 # Map heat metadata into hiera datafiles
234 type: OS::Heat::StructuredConfig
236 group: os-apply-config
241 - heat_config_%{::deploy_config_name}
247 - bootstrap_node # provided by allNodesConfig
248 - all_nodes # provided by allNodesConfig
249 - vip_data # provided by allNodesConfig
251 merge_behavior: deeper
255 service_names: {get_param: ServiceNames}
256 sensu::subscriptions: {get_param: MonitoringSubscriptions}
260 - {get_param: ServiceConfigSettings}
261 - values: {get_attr: [NetIpMap, net_ip_map]}
263 mapped_data: {get_param: BlockStorageExtraConfig}
265 mapped_data: {get_param: ExtraConfig}
268 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
270 # Resource for site-specific injection of root certificate
272 depends_on: BlockStorageDeployment
273 type: OS::TripleO::NodeTLSCAData
275 server: {get_resource: BlockStorage}
277 # Hook for site-specific additional pre-deployment config,
278 # applying to all nodes, e.g node registration/unregistration
280 depends_on: NodeTLSCAData
281 type: OS::TripleO::NodeExtraConfig
283 server: {get_resource: BlockStorage}
286 type: OS::TripleO::Tasks::PackageUpdate
289 type: OS::Heat::SoftwareDeployment
291 name: UpdateDeployment
292 config: {get_resource: UpdateConfig}
293 server: {get_resource: BlockStorage}
296 get_param: UpdateIdentifier
300 description: IP address of the server in the ctlplane network
301 value: {get_attr: [BlockStorage, networks, ctlplane, 0]}
303 description: Hostname of the server
304 value: {get_attr: [BlockStorage, name]}
309 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
310 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
311 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
312 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
313 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
314 TENANTIP TENANTHOST.DOMAIN TENANTHOST
315 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
316 CTLPLANEIP CTLPLANEHOST.DOMAIN CTLPLANEHOST
318 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
319 DOMAIN: {get_param: CloudDomain}
320 PRIMARYHOST: {get_attr: [BlockStorage, name]}
321 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
325 - - {get_attr: [BlockStorage, name]}
327 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
331 - - {get_attr: [BlockStorage, name]}
333 STORAGEIP: {get_attr: [StoragePort, ip_address]}
337 - - {get_attr: [BlockStorage, name]}
339 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
343 - - {get_attr: [BlockStorage, name]}
345 TENANTIP: {get_attr: [TenantPort, ip_address]}
349 - - {get_attr: [BlockStorage, name]}
351 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
355 - - {get_attr: [BlockStorage, name]}
357 CTLPLANEIP: {get_attr: [BlockStorage, networks, ctlplane, 0]}
361 - - {get_attr: [BlockStorage, name]}
363 nova_server_resource:
364 description: Heat resource handle for the block storage server
366 {get_resource: BlockStorage}
368 description: IP address of the server in the external network
369 value: {get_attr: [ExternalPort, ip_address]}
370 internal_api_ip_address:
371 description: IP address of the server in the internal_api network
372 value: {get_attr: [InternalApiPort, ip_address]}
374 description: IP address of the server in the storage network
375 value: {get_attr: [StoragePort, ip_address]}
376 storage_mgmt_ip_address:
377 description: IP address of the server in the storage_mgmt network
378 value: {get_attr: [StorageMgmtPort, ip_address]}
380 description: IP address of the server in the tenant network
381 value: {get_attr: [TenantPort, ip_address]}
382 management_ip_address:
383 description: IP address of the server in the management network
384 value: {get_attr: [ManagementPort, ip_address]}