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
32 CinderEnableRbdBackend:
34 description: Whether to enable or not the Rbd backend for Cinder
38 description: Set to True to enable debugging on all services.
43 Additional hiera configuration to inject into the cluster. Note
44 that NovaComputeExtraConfig takes precedence over ExtraConfig.
47 description: Flavor for the nova compute node
50 - custom_constraint: nova.flavor
53 default: '' # Has to be here because of the ignored empty value bug
56 default: overcloud-compute
58 - custom_constraint: glance.image
60 default: 'REBUILD_PRESERVE_EPHEMERAL'
61 description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
64 description: Name of an existing EC2 KeyPair to enable SSH access to the instances
68 - custom_constraint: nova.keypair
69 KeystoneAdminApiVirtualIP:
72 KeystonePublicApiVirtualIP:
75 NeutronBridgeMappings:
77 The OVS logical->physical bridge mappings to use. See the Neutron
78 documentation for details. Defaults to mapping br-ex - the external
79 bridge on hosts - to a physical name 'datacentre' which can be used
80 to create provider networks (and we use this for the default floating
81 network) - if changing this either use different post-install network
82 scripts or be sure to keep 'datacentre' as a mapping network name.
84 default: "datacentre:br-ex"
85 NeutronEnableTunnelling:
91 Enable/disable the L2 population feature in the Neutron agents.
97 If set, flat networks to configure in neutron plugins.
100 default: '' # Has to be here because of the ignored empty value bug
103 description: The tenant network type for Neutron, either gre or vxlan.
105 NeutronNetworkVLANRanges:
106 default: 'datacentre'
108 The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
109 Neutron documentation for permitted values. Defaults to permitting any
110 VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
111 type: comma_delimited_list
114 description: The password for the neutron service account, used by neutron agents.
117 NeutronPhysicalBridge:
119 description: An OVS bridge to create for accessing external networks.
121 NeutronPublicInterface:
123 description: A port to add to the NeutronPhysicalBridge.
128 The tunnel types for the Neutron tenant network. To specify multiple
129 values, use a comma separated string, like so: 'gre,vxlan'
131 NeutronTunnelIdRanges:
133 Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges
134 of GRE tunnel IDs that are available for tenant network allocation
135 default: ["1:1000", ]
136 type: comma_delimited_list
139 Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges
140 of VXLAN VNI IDs that are available for tenant network allocation
141 default: ["1:1000", ]
142 type: comma_delimited_list
143 NeutronPublicInterfaceRawDevice:
149 NeutronMetadataProxySharedSecret:
151 description: Shared secret to prevent spoofing
157 The core plugin for Neutron. The value should be the entrypoint to be loaded
158 from neutron.core_plugins namespace.
160 NeutronServicePlugins:
163 Comma-separated list of service plugin entrypoints to be loaded from the
164 neutron.service_plugins namespace.
165 type: comma_delimited_list
167 default: "vxlan,vlan,flat,gre"
169 Comma-separated list of network type driver entrypoints to be loaded.
170 type: comma_delimited_list
171 NeutronMechanismDrivers:
172 default: 'openvswitch'
174 The mechanism drivers for the Neutron tenant network. To specify multiple
175 values, use a comma separated string, like so: 'openvswitch,l2_population'
177 # Not relevant for Computes, should be removed
178 NeutronAllowL3AgentFailover:
180 description: Allow automatic l3-agent failover
182 # Not relevant for Computes, should be removed
185 description: Whether to enable l3-agent HA
189 description: Agent mode for the neutron-l3-agent on the controller hosts
193 default: '' # Has to be here because of the ignored empty value bug
196 default: libvirt.LibvirtDriver
197 NovaComputeExtraConfig:
200 NovaCompute specific configuration to inject into the cluster. Same
201 structure as ExtraConfig.
203 NovaComputeLibvirtType:
206 NovaEnableRbdBackend:
208 description: Whether to enable or not the Rbd backend for Nova
212 description: The password for the nova service account, used by nova-api.
217 default: '' # Has to be here because of the ignored empty value bug
220 description: Comma-separated list of ntp servers
221 type: comma_delimited_list
224 default: '' # Has to be here because of the ignored empty value bug
227 description: The password for RabbitMQ
232 description: The username for RabbitMQ
237 Rabbit client subscriber parameter to specify
238 an SSL connection to the RabbitMQ host.
242 description: Set rabbit subscriber port, change this if using SSL
244 SnmpdReadonlyUserName:
245 default: ro_snmp_user
246 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
248 SnmpdReadonlyUserPassword:
250 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
253 EnablePackageInstall:
255 description: Set to true to enable package installation via Puppet
259 description: Mapping of service_name -> network name. Typically set
260 via parameter_defaults in the resource registry.
264 description: Mapping of service endpoint -> protocol. Typically set
265 via parameter_defaults in the resource registry.
271 Setting to a previously unused value during stack-update will trigger
272 package update on all nodes
275 default: '' # Defaults to Heat created hostname
276 NetworkDeploymentActions:
277 type: comma_delimited_list
279 Heat action when to apply network configuration changes
285 type: OS::Nova::Server
290 get_param: ImageUpdatePolicy
291 flavor: {get_param: Flavor}
292 key_name: {get_param: KeyName}
295 user_data_format: SOFTWARE_CONFIG
296 user_data: {get_resource: UserData}
297 name: {get_param: Hostname}
299 # Combine the NodeAdminUserData and NodeUserData mime archives
301 type: OS::Heat::MultipartMime
304 - config: {get_resource: NodeAdminUserData}
306 - config: {get_resource: NodeUserData}
309 # Creates the "heat-admin" user if configured via the environment
310 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
312 type: OS::TripleO::NodeAdminUserData
314 # For optional operator additional userdata
315 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
317 type: OS::TripleO::NodeUserData
320 type: OS::TripleO::Compute::Ports::InternalApiPort
322 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
325 type: OS::TripleO::Compute::Ports::StoragePort
327 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
330 type: OS::TripleO::Compute::Ports::TenantPort
332 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
335 type: OS::TripleO::Network::Ports::NetIpMap
337 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
338 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
339 StorageIp: {get_attr: [StoragePort, ip_address]}
340 TenantIp: {get_attr: [TenantPort, ip_address]}
343 type: OS::TripleO::Compute::Net::SoftwareConfig
345 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
346 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
347 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
348 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
351 type: OS::TripleO::SoftwareDeployment
353 config: {get_resource: NetworkConfig}
354 server: {get_resource: NovaCompute}
355 actions: {get_param: NetworkDeploymentActions}
357 bridge_name: {get_param: NeutronPhysicalBridge}
358 interface_name: {get_param: NeutronPublicInterface}
361 type: OS::Heat::StructuredConfig
363 group: os-apply-config
368 - heat_config_%{::deploy_config_name}
369 - compute_extraconfig
372 - ceph_cluster # provided by CephClusterConfig
374 - all_nodes # provided by allNodesConfig
377 - cisco_n1kv_data # Optionally provided by ComputeExtraConfigPre
378 - nova_nuage_data # Optionally provided by ComputeExtraConfigPre
381 mapped_data: {get_param: NovaComputeExtraConfig}
383 mapped_data: {get_param: ExtraConfig}
385 raw_data: {get_file: hieradata/common.yaml}
387 raw_data: {get_file: hieradata/ceph.yaml}
389 raw_data: {get_file: hieradata/compute.yaml}
391 cinder_enable_nfs_backend: {get_input: cinder_enable_nfs_backend}
392 nova::debug: {get_input: debug}
393 nova::rabbit_userid: {get_input: rabbit_username}
394 nova::rabbit_password: {get_input: rabbit_password}
395 nova::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
396 nova::rabbit_port: {get_input: rabbit_client_port}
397 nova_compute_driver: {get_input: nova_compute_driver}
398 nova::compute::libvirt::libvirt_virt_type: {get_input: nova_compute_libvirt_type}
399 nova_api_host: {get_input: nova_api_host}
400 nova::compute::vncproxy_host: {get_input: nova_public_ip}
401 nova::compute::rbd::ephemeral_storage: {get_input: nova_enable_rbd_backend}
402 rbd_persistent_storage: {get_input: cinder_enable_rbd_backend}
403 nova_password: {get_input: nova_password}
404 nova::compute::vncserver_proxyclient_address: {get_input: nova_vnc_proxyclient_address}
405 ceilometer::debug: {get_input: debug}
406 ceilometer::rabbit_userid: {get_input: rabbit_username}
407 ceilometer::rabbit_password: {get_input: rabbit_password}
408 ceilometer::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
409 ceilometer::rabbit_port: {get_input: rabbit_client_port}
410 ceilometer::metering_secret: {get_input: ceilometer_metering_secret}
411 ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
412 ceilometer::agent::auth::auth_url: {get_input: ceilometer_agent_auth_url}
413 ceilometer_compute_agent: {get_input: ceilometer_compute_agent}
414 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
415 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
416 nova::glance_api_servers: {get_input: glance_api_servers}
417 neutron::debug: {get_input: debug}
418 neutron::rabbit_password: {get_input: rabbit_password}
419 neutron::rabbit_user: {get_input: rabbit_username}
420 neutron::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
421 neutron::rabbit_port: {get_input: rabbit_client_port}
422 neutron_flat_networks: {get_input: neutron_flat_networks}
423 neutron_host: {get_input: neutron_host}
424 neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
426 neutron_tenant_network_type: {get_input: neutron_tenant_network_type}
427 neutron_tunnel_types: {get_input: neutron_tunnel_types}
428 neutron::plugins::ml2::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
429 neutron::plugins::ml2::tunnel_id_ranges: {get_input: neutron_tunnel_id_ranges}
430 neutron::plugins::ml2::vni_ranges: {get_input: neutron_vni_ranges}
431 neutron_bridge_mappings: {get_input: neutron_bridge_mappings}
432 neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
433 neutron::agents::ml2::ovs::l2_population: {get_input: neutron_enable_l2pop}
434 neutron_physical_bridge: {get_input: neutron_physical_bridge}
435 neutron_public_interface: {get_input: neutron_public_interface}
436 nova::network::neutron::neutron_admin_password: {get_input: neutron_password}
437 nova::network::neutron::neutron_url: {get_input: neutron_internal_url}
438 nova::network::neutron::neutron_admin_auth_url: {get_input: neutron_admin_auth_url}
439 neutron_router_distributed: {get_input: neutron_router_distributed}
440 neutron_agent_mode: {get_input: neutron_agent_mode}
441 neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
442 neutron::core_plugin: {get_input: neutron_core_plugin}
443 neutron::service_plugins: {get_input: neutron_service_plugins}
444 neutron::plugins::ml2::type_drivers: {get_input: neutron_type_drivers}
445 neutron_mechanism_drivers: {get_input: neutron_mechanism_drivers}
446 neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
447 admin_password: {get_input: admin_password}
448 ntp::servers: {get_input: ntp_servers}
449 tripleo::packages::enable_install: {get_input: enable_package_install}
450 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
452 NovaComputeDeployment:
453 type: OS::TripleO::SoftwareDeployment
454 depends_on: NetworkDeployment
456 config: {get_resource: NovaComputeConfig}
457 server: {get_resource: NovaCompute}
459 cinder_enable_nfs_backend: {get_param: CinderEnableNfsBackend}
460 debug: {get_param: Debug}
461 nova_compute_driver: {get_param: NovaComputeDriver}
462 nova_compute_libvirt_type: {get_param: NovaComputeLibvirtType}
463 nova_public_ip: {get_param: NovaPublicIP}
464 nova_api_host: {get_param: NovaApiHost}
465 nova_password: {get_param: NovaPassword}
466 nova_enable_rbd_backend: {get_param: NovaEnableRbdBackend}
467 cinder_enable_rbd_backend: {get_param: CinderEnableRbdBackend}
468 nova_vnc_proxyclient_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaVncProxyNetwork]}]}
469 ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
470 ceilometer_password: {get_param: CeilometerPassword}
471 ceilometer_compute_agent: {get_param: CeilometerComputeAgent}
472 ceilometer_agent_auth_url: {get_param: [EndpointMap, KeystoneInternal, uri]}
473 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
474 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
475 glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
476 neutron_flat_networks: {get_param: NeutronFlatNetworks}
477 neutron_host: {get_param: NeutronHost}
478 neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
479 neutron_tenant_network_type: {get_param: NeutronNetworkType}
480 neutron_tunnel_types: {get_param: NeutronTunnelTypes}
481 neutron_tunnel_id_ranges:
483 template: "['RANGES']"
488 - {get_param: NeutronTunnelIdRanges}
491 template: "['RANGES']"
496 - {get_param: NeutronVniRanges}
497 neutron_network_vlan_ranges:
499 template: "['RANGES']"
504 - {get_param: NeutronNetworkVLANRanges}
505 neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
506 neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
507 neutron_enable_l2pop: {get_param: NeutronEnableL2Pop}
508 neutron_physical_bridge: {get_param: NeutronPhysicalBridge}
509 neutron_public_interface: {get_param: NeutronPublicInterface}
510 neutron_password: {get_param: NeutronPassword}
511 neutron_agent_mode: {get_param: NeutronAgentMode}
512 neutron_router_distributed: {get_param: NeutronDVR}
513 neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
514 neutron_core_plugin: {get_param: NeutronCorePlugin}
515 neutron_service_plugins:
517 template: "['PLUGINS']"
522 - {get_param: NeutronServicePlugins}
523 neutron_type_drivers:
525 template: "['DRIVERS']"
530 - {get_param: NeutronTypeDrivers}
531 neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
532 neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
533 neutron_internal_url: {get_param: [EndpointMap, NeutronInternal, uri]}
534 neutron_admin_auth_url: {get_param: [EndpointMap, KeystoneAdmin, uri]}
535 admin_password: {get_param: AdminPassword}
536 rabbit_username: {get_param: RabbitUserName}
537 rabbit_password: {get_param: RabbitPassword}
538 rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
539 rabbit_client_port: {get_param: RabbitClientPort}
540 ntp_servers: {get_param: NtpServer}
541 enable_package_install: {get_param: EnablePackageInstall}
542 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
544 # Resource for site-specific injection of root certificate
546 depends_on: NovaComputeDeployment
547 type: OS::TripleO::NodeTLSCAData
549 server: {get_resource: NovaCompute}
551 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
552 ComputeExtraConfigPre:
553 depends_on: NovaComputeDeployment
554 type: OS::TripleO::ComputeExtraConfigPre
556 server: {get_resource: NovaCompute}
558 # Hook for site-specific additional pre-deployment config,
559 # applying to all nodes, e.g node registration/unregistration
561 depends_on: [ComputeExtraConfigPre, NodeTLSCAData]
562 type: OS::TripleO::NodeExtraConfig
564 server: {get_resource: NovaCompute}
567 type: OS::TripleO::Tasks::PackageUpdate
570 type: OS::Heat::SoftwareDeployment
572 config: {get_resource: UpdateConfig}
573 server: {get_resource: NovaCompute}
576 get_param: UpdateIdentifier
580 description: IP address of the server in the ctlplane network
581 value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
582 internal_api_ip_address:
583 description: IP address of the server in the internal_api network
584 value: {get_attr: [InternalApiPort, ip_address]}
586 description: IP address of the server in the storage network
587 value: {get_attr: [StoragePort, ip_address]}
589 description: IP address of the server in the tenant network
590 value: {get_attr: [TenantPort, ip_address]}
592 description: Hostname of the server
593 value: {get_attr: [NovaCompute, name]}
596 Server's IP address and hostname in the /etc/hosts format
599 template: "IP HOST.localdomain HOST"
601 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
602 HOST: {get_attr: [NovaCompute, name]}
603 nova_server_resource:
604 description: Heat resource handle for the Nova compute server
606 {get_resource: NovaCompute}
608 description: identifier which changes if the node configuration may need re-applying
612 - - {get_attr: [NovaComputeDeployment, deploy_stdout]}
613 - {get_attr: [NodeTLSCAData, deploy_stdout]}
614 - {get_attr: [ComputeExtraConfigPre, deploy_stdout]}
615 - {get_param: UpdateIdentifier}