1 heat_template_version: 2016-10-14
4 OpenStack controller node configured by Puppet.
10 Deprecated. Use ControllerExtraConfig via parameter_defaults instead.
12 ControllerExtraConfig:
15 Controller specific hiera configuration data to inject into the cluster.
20 A network mapped list of IPs to assign to Controllers in the following form:
22 "internal_api": ["a.b.c.d", "e.f.g.h"],
28 description: Set to True to enable debugging on all services.
32 description: Whether to deploy a LoadBalancer on the Controller
37 Additional hieradata to inject into the cluster, note that
38 ControllerExtraConfig takes precedence over ExtraConfig.
40 OvercloudControlFlavor:
41 description: Flavor for control nodes to request when deploying.
45 - custom_constraint: nova.flavor
48 default: overcloud-full
50 - custom_constraint: glance.image
52 default: 'REBUILD_PRESERVE_EPHEMERAL'
53 description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
57 description: Name of an existing Nova key pair to enable SSH access to the instances
60 - custom_constraint: nova.keypair
61 NeutronPublicInterface:
63 description: What interface to bridge onto br-ex for network nodes.
67 default: '' # Has to be here because of the ignored empty value bug
70 description: 'A hash of additional raw devices to use as Swift backend (eg. {sdb: {}})'
74 description: Mapping of service_name -> network name. Typically set
75 via parameter_defaults in the resource registry.
79 description: Mapping of service endpoint -> protocol. Typically set
80 via parameter_defaults in the resource registry.
86 Setting to a previously unused value during stack-update will trigger
87 package update on all nodes
90 default: '' # Defaults to Heat created hostname
94 description: Optional mapping to override hostnames
95 NetworkDeploymentActions:
96 type: comma_delimited_list
98 Heat action when to apply network configuration changes
103 SoftwareConfigTransport:
104 default: POLL_SERVER_CFN
106 How the server should receive the metadata required for software configuration.
109 - allowed_values: [POLL_SERVER_CFN, POLL_SERVER_HEAT, POLL_TEMP_URL, ZAQAR_MESSAGE]
113 The DNS domain used for the hosts. This should match the dhcp_domain
114 configured in the Undercloud neutron. Defaults to localdomain.
118 Extra properties or metadata passed to Nova for the created nodes in
119 the overcloud. It's accessible via the Nova metadata API.
121 ControllerSchedulerHints:
123 description: Optional scheduler hints to pass to nova
125 ServiceConfigSettings:
129 type: comma_delimited_list
131 MonitoringSubscriptions:
132 type: comma_delimited_list
136 description: Command which will be run whenever configuration data changes
137 default: os-refresh-config --timeout 14400
141 description: Do not use deprecated params, they will be removed.
143 - controllerExtraConfig
148 type: OS::TripleO::Server
151 command: {get_param: ConfigCommand}
153 image: {get_param: controllerImage}
154 image_update_policy: {get_param: ImageUpdatePolicy}
155 flavor: {get_param: OvercloudControlFlavor}
156 key_name: {get_param: KeyName}
159 user_data_format: SOFTWARE_CONFIG
160 user_data: {get_resource: UserData}
163 template: {get_param: Hostname}
164 params: {get_param: HostnameMap}
165 software_config_transport: {get_param: SoftwareConfigTransport}
166 metadata: {get_param: ServerMetadata}
167 scheduler_hints: {get_param: ControllerSchedulerHints}
169 # Combine the NodeAdminUserData and NodeUserData mime archives
171 type: OS::Heat::MultipartMime
174 - config: {get_resource: NodeAdminUserData}
176 - config: {get_resource: NodeUserData}
179 # Creates the "heat-admin" user if configured via the environment
180 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
182 type: OS::TripleO::NodeAdminUserData
184 # For optional operator additional userdata
185 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
187 type: OS::TripleO::NodeUserData
190 type: OS::TripleO::Controller::Ports::ExternalPort
192 IPPool: {get_param: ControllerIPs}
193 NodeIndex: {get_param: NodeIndex}
194 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
197 type: OS::TripleO::Controller::Ports::InternalApiPort
199 IPPool: {get_param: ControllerIPs}
200 NodeIndex: {get_param: NodeIndex}
201 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
204 type: OS::TripleO::Controller::Ports::StoragePort
206 IPPool: {get_param: ControllerIPs}
207 NodeIndex: {get_param: NodeIndex}
208 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
211 type: OS::TripleO::Controller::Ports::StorageMgmtPort
213 IPPool: {get_param: ControllerIPs}
214 NodeIndex: {get_param: NodeIndex}
215 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
218 type: OS::TripleO::Controller::Ports::TenantPort
220 IPPool: {get_param: ControllerIPs}
221 NodeIndex: {get_param: NodeIndex}
222 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
225 type: OS::TripleO::Controller::Ports::ManagementPort
227 IPPool: {get_param: ControllerIPs}
228 NodeIndex: {get_param: NodeIndex}
229 ControlPlaneIP: {get_attr: [Controller, networks, ctlplane, 0]}
232 type: OS::TripleO::Network::Ports::NetIpMap
234 ControlPlaneIp: {get_attr: [Controller, networks, ctlplane, 0]}
235 ExternalIp: {get_attr: [ExternalPort, ip_address]}
236 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
237 ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
238 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
239 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
240 InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
241 StorageIp: {get_attr: [StoragePort, ip_address]}
242 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
243 StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
244 StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
245 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
246 StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
247 TenantIp: {get_attr: [TenantPort, ip_address]}
248 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
249 TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
250 ManagementIp: {get_attr: [ManagementPort, ip_address]}
251 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
252 ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
255 type: OS::TripleO::Controller::Net::SoftwareConfig
257 ControlPlaneIp: {get_attr: [Controller, networks, ctlplane, 0]}
258 ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
259 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
260 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
261 StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
262 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
263 ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
266 type: OS::TripleO::SoftwareDeployment
268 name: NetworkDeployment
269 config: {get_resource: NetworkConfig}
270 server: {get_resource: Controller}
271 actions: {get_param: NetworkDeploymentActions}
274 interface_name: {get_param: NeutronPublicInterface}
276 # Resource for site-specific injection of root certificate
278 depends_on: NetworkDeployment
279 type: OS::TripleO::NodeTLSCAData
281 server: {get_resource: Controller}
283 # Resource for site-specific passing of private keys/certificates
285 depends_on: NodeTLSCAData
286 type: OS::TripleO::NodeTLSData
288 server: {get_resource: Controller}
289 NodeIndex: {get_param: NodeIndex}
292 ControllerDeployment:
293 type: OS::TripleO::SoftwareDeployment
294 depends_on: NetworkDeployment
296 name: ControllerDeployment
297 config: {get_resource: ControllerConfig}
298 server: {get_resource: Controller}
300 bootstack_nodeid: {get_attr: [Controller, name]}
301 enable_load_balancer: {get_param: EnableLoadBalancer}
302 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
303 redis_vip: {get_param: RedisVirtualIP}
305 # Map heat metadata into hiera datafiles
307 type: OS::Heat::StructuredConfig
309 group: os-apply-config
314 - heat_config_%{::deploy_config_name}
315 - controller_extraconfig
320 - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
321 - bootstrap_node # provided by BootstrapNodeConfig
322 - all_nodes # provided by allNodesConfig
323 - vip_data # provided by vip-config
325 - cinder_dellsc_data # Optionally provided by ControllerExtraConfigPre
326 - cinder_netapp_data # Optionally provided by ControllerExtraConfigPre
327 - cinder_eqlx_data # Optionally provided by ControllerExtraConfigPre
328 - neutron_bigswitch_data # Optionally provided by ControllerExtraConfigPre
329 - neutron_cisco_data # Optionally provided by ControllerExtraConfigPre
330 - cisco_n1kv_data # Optionally provided by ControllerExtraConfigPre
331 - midonet_data #Optionally provided by AllNodesExtraConfig
332 - cisco_aci_data # Optionally provided by ControllerExtraConfigPre
333 merge_behavior: deeper
337 service_names: {get_param: ServiceNames}
338 sensu::subscriptions: {get_param: MonitoringSubscriptions}
342 - {get_param: ServiceConfigSettings}
343 - values: {get_attr: [NetIpMap, net_ip_map]}
344 controller_extraconfig:
347 - {get_param: controllerExtraConfig}
348 - {get_param: ControllerExtraConfig}
350 mapped_data: {get_param: ExtraConfig}
352 mapped_data: # data supplied directly to this deployment configuration, etc
353 bootstack_nodeid: {get_input: bootstack_nodeid}
356 enable_load_balancer: {get_input: enable_load_balancer}
359 redis_vip: {get_input: redis_vip}
361 tripleo::haproxy::service_certificate: {get_attr: [NodeTLSData, deployed_ssl_certificate_path]}
362 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
364 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
365 ControllerExtraConfigPre:
366 depends_on: ControllerDeployment
367 type: OS::TripleO::ControllerExtraConfigPre
369 server: {get_resource: Controller}
371 # Hook for site-specific additional pre-deployment config,
372 # applying to all nodes, e.g node registration/unregistration
374 depends_on: [ControllerExtraConfigPre, NodeTLSData]
375 type: OS::TripleO::NodeExtraConfig
377 server: {get_resource: Controller}
380 type: OS::TripleO::Tasks::PackageUpdate
383 type: OS::Heat::SoftwareDeployment
385 name: UpdateDeployment
386 config: {get_resource: UpdateConfig}
387 server: {get_resource: Controller}
390 get_param: UpdateIdentifier
394 description: IP address of the server in the ctlplane network
395 value: {get_attr: [Controller, networks, ctlplane, 0]}
397 description: IP address of the server in the external network
398 value: {get_attr: [ExternalPort, ip_address]}
399 internal_api_ip_address:
400 description: IP address of the server in the internal_api network
401 value: {get_attr: [InternalApiPort, ip_address]}
403 description: IP address of the server in the storage network
404 value: {get_attr: [StoragePort, ip_address]}
405 storage_mgmt_ip_address:
406 description: IP address of the server in the storage_mgmt network
407 value: {get_attr: [StorageMgmtPort, ip_address]}
409 description: IP address of the server in the tenant network
410 value: {get_attr: [TenantPort, ip_address]}
411 management_ip_address:
412 description: IP address of the server in the management network
413 value: {get_attr: [ManagementPort, ip_address]}
415 description: Hostname of the server
416 value: {get_attr: [Controller, name]}
419 Server's IP address and hostname in the /etc/hosts format
423 PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
424 EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
425 INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
426 STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
427 STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
428 TENANTIP TENANTHOST.DOMAIN TENANTHOST
429 MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
431 PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ControllerHostnameResolveNetwork]}]}
432 DOMAIN: {get_param: CloudDomain}
433 PRIMARYHOST: {get_attr: [Controller, name]}
434 EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
438 - - {get_attr: [Controller, name]}
440 INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
444 - - {get_attr: [Controller, name]}
446 STORAGEIP: {get_attr: [StoragePort, ip_address]}
450 - - {get_attr: [Controller, name]}
452 STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
456 - - {get_attr: [Controller, name]}
458 TENANTIP: {get_attr: [TenantPort, ip_address]}
462 - - {get_attr: [Controller, name]}
464 MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
468 - - {get_attr: [Controller, name]}
470 nova_server_resource:
471 description: Heat resource handle for the Nova compute server
473 {get_resource: Controller}
475 description: Swift device formatted for swift-ring-builder
481 - ['r1z1-IP:%PORT%/d1']
483 template: 'r1z1-IP:%PORT%/DEVICE'
485 DEVICE: {get_param: SwiftRawDisks}
492 template: "NETWORK_uri"
494 NETWORK: {get_param: [ServiceNetMap, SwiftMgmtNetwork]}
495 swift_proxy_memcache:
496 description: Swift proxy-memcache value
506 template: "NETWORK_uri"
508 NETWORK: {get_param: [ServiceNetMap, MemcachedNetwork]}
510 description: MD5 checksum of the TLS Key Modulus
511 value: {get_attr: [NodeTLSData, key_modulus_md5]}
512 tls_cert_modulus_md5:
513 description: MD5 checksum of the TLS Certificate Modulus
514 value: {get_attr: [NodeTLSData, cert_modulus_md5]}