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 - all_nodes # provided by allNodesConfig
249 merge_behavior: deeper
253 service_names: {get_param: ServiceNames}
254 sensu::subscriptions: {get_param: MonitoringSubscriptions}
258 - {get_param: ServiceConfigSettings}
259 - values: {get_attr: [NetIpMap, net_ip_map]}
261 mapped_data: {get_param: BlockStorageExtraConfig}
263 mapped_data: {get_param: ExtraConfig}
266 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
268 # Resource for site-specific injection of root certificate
270 depends_on: BlockStorageDeployment
271 type: OS::TripleO::NodeTLSCAData
273 server: {get_resource: BlockStorage}
275 # Hook for site-specific additional pre-deployment config,
276 # applying to all nodes, e.g node registration/unregistration
278 depends_on: NodeTLSCAData
279 type: OS::TripleO::NodeExtraConfig
281 server: {get_resource: BlockStorage}
284 type: OS::TripleO::Tasks::PackageUpdate
287 type: OS::Heat::SoftwareDeployment
289 name: UpdateDeployment
290 config: {get_resource: UpdateConfig}
291 server: {get_resource: BlockStorage}
294 get_param: UpdateIdentifier
298 description: IP address of the server in the ctlplane network
299 value: {get_attr: [BlockStorage, networks, ctlplane, 0]}
301 description: Hostname of the server
302 value: {get_attr: [BlockStorage, name]}
307 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
308 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
309 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
310 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
311 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
312 TENANTIP TENANTHOST.DOMAIN TENANTHOST
313 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
315 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, BlockStorageHostnameResolveNetwork]}]}
316 DOMAIN: {get_param: CloudDomain}
317 PRIMARYHOST: {get_attr: [BlockStorage, name]}
318 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
322 - - {get_attr: [BlockStorage, name]}
324 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
328 - - {get_attr: [BlockStorage, name]}
330 STORAGEIP: {get_attr: [StoragePort, ip_address]}
334 - - {get_attr: [BlockStorage, name]}
336 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
340 - - {get_attr: [BlockStorage, name]}
342 TENANTIP: {get_attr: [TenantPort, ip_address]}
346 - - {get_attr: [BlockStorage, name]}
348 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
352 - - {get_attr: [BlockStorage, name]}
354 nova_server_resource:
355 description: Heat resource handle for the block storage server
357 {get_resource: BlockStorage}
359 description: IP address of the server in the external network
360 value: {get_attr: [ExternalPort, ip_address]}
361 internal_api_ip_address:
362 description: IP address of the server in the internal_api network
363 value: {get_attr: [InternalApiPort, ip_address]}
365 description: IP address of the server in the storage network
366 value: {get_attr: [StoragePort, ip_address]}
367 storage_mgmt_ip_address:
368 description: IP address of the server in the storage_mgmt network
369 value: {get_attr: [StorageMgmtPort, ip_address]}
371 description: IP address of the server in the tenant network
372 value: {get_attr: [TenantPort, ip_address]}
373 management_ip_address:
374 description: IP address of the server in the management network
375 value: {get_attr: [ManagementPort, ip_address]}