1 heat_template_version: 2015-04-30
4 OpenStack hypervisor node configured via Puppet.
9 description: The password for the keystone admin account, used for monitoring, querying neutron etc.
12 CeilometerComputeAgent:
13 description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
17 - allowed_values: ['', Present]
18 CeilometerMeteringSecret:
20 description: Secret shared by the ceilometer services.
25 description: The password for the ceilometer service account.
28 CinderEnableNfsBackend:
30 description: Whether to enable or not the NFS backend for Cinder
34 description: Set to True to enable debugging on all services.
39 Additional hiera configuration to inject into the cluster. Note
40 that NovaComputeExtraConfig takes precedence over ExtraConfig.
43 description: Flavor for the nova compute node
46 - custom_constraint: nova.flavor
49 default: '' # Has to be here because of the ignored empty value bug
52 description: Glance port.
56 description: Protocol to use when connecting to glance, set to https for SSL.
60 default: overcloud-compute
62 - custom_constraint: glance.image
64 default: 'REBUILD_PRESERVE_EPHEMERAL'
65 description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
68 description: Name of an existing EC2 KeyPair to enable SSH access to the instances
72 - custom_constraint: nova.keypair
73 KeystoneAdminApiVirtualIP:
76 KeystonePublicApiVirtualIP:
79 NeutronBridgeMappings:
81 The OVS logical->physical bridge mappings to use. See the Neutron
82 documentation for details. Defaults to mapping br-ex - the external
83 bridge on hosts - to a physical name 'datacentre' which can be used
84 to create provider networks (and we use this for the default floating
85 network) - if changing this either use different post-install network
86 scripts or be sure to keep 'datacentre' as a mapping network name.
88 default: "datacentre:br-ex"
89 NeutronEnableTunnelling:
96 If set, flat networks to configure in neutron plugins.
99 default: '' # Has to be here because of the ignored empty value bug
102 description: The tenant network type for Neutron, either gre or vxlan.
104 NeutronNetworkVLANRanges:
105 default: 'datacentre'
107 The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
108 Neutron documentation for permitted values. Defaults to permitting any
109 VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
110 type: comma_delimited_list
113 description: The password for the neutron service account, used by neutron agents.
116 NeutronPhysicalBridge:
118 description: An OVS bridge to create for accessing external networks.
120 NeutronPublicInterface:
122 description: A port to add to the NeutronPhysicalBridge.
127 The tunnel types for the Neutron tenant network. To specify multiple
128 values, use a comma separated string, like so: 'gre,vxlan'
130 NeutronTunnelIdRanges:
132 Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges
133 of GRE tunnel IDs that are available for tenant network allocation
134 default: ["1:1000", ]
135 type: comma_delimited_list
138 Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges
139 of VXLAN VNI IDs that are available for tenant network allocation
140 default: ["1:1000", ]
141 type: comma_delimited_list
142 NeutronPublicInterfaceRawDevice:
148 NeutronMetadataProxySharedSecret:
150 description: Shared secret to prevent spoofing
152 NeutronMechanismDrivers:
153 default: 'openvswitch'
155 The mechanism drivers for the Neutron tenant network. To specify multiple
156 values, use a comma separated string, like so: 'openvswitch,l2_population'
158 # Not relevant for Computes, should be removed
159 NeutronAllowL3AgentFailover:
161 description: Allow automatic l3-agent failover
163 # Not relevant for Computes, should be removed
166 description: Whether to enable l3-agent HA
170 description: Agent mode for the neutron-l3-agent on the controller hosts
174 default: '' # Has to be here because of the ignored empty value bug
177 default: libvirt.LibvirtDriver
178 NovaComputeExtraConfig:
181 NovaCompute specific configuration to inject into the cluster. Same
182 structure as ExtraConfig.
184 NovaComputeLibvirtType:
187 NovaEnableRbdBackend:
189 description: Whether to enable or not the Rbd backend for Nova
193 description: The password for the nova service account, used by nova-api.
198 default: '' # Has to be here because of the ignored empty value bug
204 default: '' # Has to be here because of the ignored empty value bug
207 description: The password for RabbitMQ
212 description: The username for RabbitMQ
217 Rabbit client subscriber parameter to specify
218 an SSL connection to the RabbitMQ host.
222 description: Set rabbit subscriber port, change this if using SSL
224 SnmpdReadonlyUserName:
225 default: ro_snmp_user
226 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
228 SnmpdReadonlyUserPassword:
230 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
233 EnablePackageInstall:
235 description: Set to true to enable package installation via Puppet
239 description: Mapping of service_name -> network name. Typically set
240 via parameter_defaults in the resource registry.
246 Setting to a previously unused value during stack-update will trigger
247 package update on all nodes
250 default: '' # Defaults to Heat created hostname
255 type: OS::Nova::Server
260 get_param: ImageUpdatePolicy
261 flavor: {get_param: Flavor}
262 key_name: {get_param: KeyName}
265 user_data_format: SOFTWARE_CONFIG
266 user_data: {get_resource: UserData}
267 name: {get_param: Hostname}
269 # Combine the NodeAdminUserData and NodeUserData mime archives
271 type: OS::Heat::MultipartMime
274 - config: {get_resource: NodeAdminUserData}
276 - config: {get_resource: NodeUserData}
279 # Creates the "heat-admin" user if configured via the environment
280 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
282 type: OS::TripleO::NodeAdminUserData
284 # For optional operator additional userdata
285 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
287 type: OS::TripleO::NodeUserData
290 type: OS::TripleO::Compute::Ports::InternalApiPort
292 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
295 type: OS::TripleO::Compute::Ports::StoragePort
297 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
300 type: OS::TripleO::Compute::Ports::TenantPort
302 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
305 type: OS::TripleO::Network::Ports::NetIpMap
307 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
308 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
309 StorageIp: {get_attr: [StoragePort, ip_address]}
310 TenantIp: {get_attr: [TenantPort, ip_address]}
313 type: OS::TripleO::Compute::Net::SoftwareConfig
315 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
316 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
317 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
318 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
321 type: OS::TripleO::SoftwareDeployment
323 config: {get_resource: NetworkConfig}
324 server: {get_resource: NovaCompute}
326 bridge_name: {get_param: NeutronPhysicalBridge}
327 interface_name: {get_param: NeutronPublicInterface}
330 type: OS::Heat::StructuredConfig
332 group: os-apply-config
337 - heat_config_%{::deploy_config_name}
338 - compute_extraconfig
341 - ceph_cluster # provided by CephClusterConfig
343 - all_nodes # provided by allNodesConfig
348 mapped_data: {get_param: NovaComputeExtraConfig}
350 mapped_data: {get_param: ExtraConfig}
352 raw_data: {get_file: hieradata/common.yaml}
354 raw_data: {get_file: hieradata/ceph.yaml}
356 raw_data: {get_file: hieradata/compute.yaml}
358 cinder_enable_nfs_backend: {get_input: cinder_enable_nfs_backend}
359 nova::debug: {get_input: debug}
360 nova::rabbit_userid: {get_input: rabbit_username}
361 nova::rabbit_password: {get_input: rabbit_password}
362 nova::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
363 nova::rabbit_port: {get_input: rabbit_client_port}
364 nova_compute_driver: {get_input: nova_compute_driver}
365 nova::compute::libvirt::libvirt_virt_type: {get_input: nova_compute_libvirt_type}
366 nova_api_host: {get_input: nova_api_host}
367 nova::compute::vncproxy_host: {get_input: nova_public_ip}
368 nova::compute::rbd::ephemeral_storage: {get_input: nova_enable_rbd_backend}
369 nova_password: {get_input: nova_password}
370 nova::compute::vncserver_proxyclient_address: {get_input: nova_vnc_proxyclient_address}
371 ceilometer::debug: {get_input: debug}
372 ceilometer::rabbit_userid: {get_input: rabbit_username}
373 ceilometer::rabbit_password: {get_input: rabbit_password}
374 ceilometer::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
375 ceilometer::rabbit_port: {get_input: rabbit_client_port}
376 ceilometer::metering_secret: {get_input: ceilometer_metering_secret}
377 ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
378 ceilometer::agent::auth::auth_url: {get_input: ceilometer_agent_auth_url}
379 ceilometer_compute_agent: {get_input: ceilometer_compute_agent}
380 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
381 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
382 nova::glance_api_servers: {get_input: glance_api_servers}
383 neutron::debug: {get_input: debug}
384 neutron::rabbit_password: {get_input: rabbit_password}
385 neutron::rabbit_user: {get_input: rabbit_user}
386 neutron::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
387 neutron::rabbit_port: {get_input: rabbit_client_port}
388 neutron_flat_networks: {get_input: neutron_flat_networks}
389 neutron_host: {get_input: neutron_host}
390 neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
392 neutron_tenant_network_type: {get_input: neutron_tenant_network_type}
393 neutron_tunnel_types: {get_input: neutron_tunnel_types}
394 neutron::plugins::ml2::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
395 neutron::plugins::ml2::tunnel_id_ranges: {get_input: neutron_tunnel_id_ranges}
396 neutron::plugins::ml2::vni_ranges: {get_input: neutron_vni_ranges}
397 neutron_bridge_mappings: {get_input: neutron_bridge_mappings}
398 neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
399 neutron_physical_bridge: {get_input: neutron_physical_bridge}
400 neutron_public_interface: {get_input: neutron_public_interface}
401 nova::network::neutron::neutron_admin_password: {get_input: neutron_password}
402 nova::network::neutron::neutron_url: {get_input: neutron_url}
403 nova::network::neutron::neutron_admin_auth_url: {get_input: neutron_admin_auth_url}
404 neutron_router_distributed: {get_input: neutron_router_distributed}
405 neutron_agent_mode: {get_input: neutron_agent_mode}
406 neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
407 neutron_mechanism_drivers: {get_input: neutron_mechanism_drivers}
408 neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
409 admin_password: {get_input: admin_password}
410 ntp::servers: {get_input: ntp_servers}
411 tripleo::packages::enable_install: {get_input: enable_package_install}
413 NovaComputeDeployment:
414 type: OS::TripleO::SoftwareDeployment
415 depends_on: NetworkDeployment
417 config: {get_resource: NovaComputeConfig}
418 server: {get_resource: NovaCompute}
420 cinder_enable_nfs_backend: {get_param: CinderEnableNfsBackend}
421 debug: {get_param: Debug}
422 nova_compute_driver: {get_param: NovaComputeDriver}
423 nova_compute_libvirt_type: {get_param: NovaComputeLibvirtType}
424 nova_public_ip: {get_param: NovaPublicIP}
425 nova_api_host: {get_param: NovaApiHost}
426 nova_password: {get_param: NovaPassword}
427 nova_enable_rbd_backend: {get_param: NovaEnableRbdBackend}
428 nova_vnc_proxyclient_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaVncProxyNetwork]}]}
429 ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
430 ceilometer_password: {get_param: CeilometerPassword}
431 ceilometer_compute_agent: {get_param: CeilometerComputeAgent}
432 ceilometer_agent_auth_url:
436 - {get_param: KeystonePublicApiVirtualIP}
438 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
439 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
443 - - {get_param: GlanceProtocol}
445 - {get_param: GlanceHost}
447 - {get_param: GlancePort}
448 neutron_flat_networks: {get_param: NeutronFlatNetworks}
449 neutron_host: {get_param: NeutronHost}
450 neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
451 neutron_tenant_network_type: {get_param: NeutronNetworkType}
452 neutron_tunnel_types: {get_param: NeutronTunnelTypes}
453 neutron_tunnel_id_ranges:
455 template: "['RANGES']"
460 - {get_param: NeutronTunnelIdRanges}
463 template: "['RANGES']"
468 - {get_param: NeutronVniRanges}
469 neutron_network_vlan_ranges:
471 template: "['RANGES']"
476 - {get_param: NeutronNetworkVLANRanges}
477 neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
478 neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
479 neutron_physical_bridge: {get_param: NeutronPhysicalBridge}
480 neutron_public_interface: {get_param: NeutronPublicInterface}
481 neutron_password: {get_param: NeutronPassword}
482 neutron_agent_mode: {get_param: NeutronAgentMode}
483 neutron_router_distributed: {get_param: NeutronDVR}
484 neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
485 neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
486 neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
491 - {get_param: NeutronHost}
493 neutron_admin_auth_url:
497 - {get_param: KeystoneAdminApiVirtualIP}
499 admin_password: {get_param: AdminPassword}
500 rabbit_username: {get_param: RabbitUserName}
501 rabbit_password: {get_param: RabbitPassword}
502 rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
503 rabbit_client_port: {get_param: RabbitClientPort}
506 template: '["server"]'
508 server: {get_param: NtpServer}
509 enable_package_install: {get_param: EnablePackageInstall}
511 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
512 ComputeExtraConfigPre:
513 depends_on: NovaComputeDeployment
514 type: OS::TripleO::ComputeExtraConfigPre
516 server: {get_resource: NovaCompute}
519 type: OS::TripleO::Tasks::PackageUpdate
522 type: OS::Heat::SoftwareDeployment
524 config: {get_resource: UpdateConfig}
525 server: {get_resource: NovaCompute}
528 get_param: UpdateIdentifier
532 description: IP address of the server in the ctlplane network
533 value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
534 internal_api_ip_address:
535 description: IP address of the server in the internal_api network
536 value: {get_attr: [InternalApiPort, ip_address]}
538 description: IP address of the server in the storage network
539 value: {get_attr: [StoragePort, ip_address]}
541 description: IP address of the server in the tenant network
542 value: {get_attr: [TenantPort, ip_address]}
544 description: Hostname of the server
545 value: {get_attr: [NovaCompute, name]}
548 Server's IP address and hostname in the /etc/hosts format
551 template: "IP HOST.localdomain HOST"
553 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
554 HOST: {get_attr: [NovaCompute, name]}
555 nova_server_resource:
556 description: Heat resource handle for the Nova compute server
558 {get_resource: NovaCompute}
560 description: identifier which changes if the node configuration may need re-applying
564 - - {get_attr: [NovaComputeDeployment, deploy_stdout]}
565 - {get_attr: [ComputeExtraConfigPre, deploy_stdout]}