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
380 mapped_data: {get_param: NovaComputeExtraConfig}
382 mapped_data: {get_param: ExtraConfig}
384 raw_data: {get_file: hieradata/common.yaml}
386 raw_data: {get_file: hieradata/ceph.yaml}
388 raw_data: {get_file: hieradata/compute.yaml}
390 cinder_enable_nfs_backend: {get_input: cinder_enable_nfs_backend}
391 nova::debug: {get_input: debug}
392 nova::rabbit_userid: {get_input: rabbit_username}
393 nova::rabbit_password: {get_input: rabbit_password}
394 nova::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
395 nova::rabbit_port: {get_input: rabbit_client_port}
396 nova_compute_driver: {get_input: nova_compute_driver}
397 nova::compute::libvirt::libvirt_virt_type: {get_input: nova_compute_libvirt_type}
398 nova_api_host: {get_input: nova_api_host}
399 nova::compute::vncproxy_host: {get_input: nova_public_ip}
400 nova::compute::rbd::ephemeral_storage: {get_input: nova_enable_rbd_backend}
401 rbd_persistent_storage: {get_input: cinder_enable_rbd_backend}
402 nova_password: {get_input: nova_password}
403 nova::compute::vncserver_proxyclient_address: {get_input: nova_vnc_proxyclient_address}
404 ceilometer::debug: {get_input: debug}
405 ceilometer::rabbit_userid: {get_input: rabbit_username}
406 ceilometer::rabbit_password: {get_input: rabbit_password}
407 ceilometer::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
408 ceilometer::rabbit_port: {get_input: rabbit_client_port}
409 ceilometer::metering_secret: {get_input: ceilometer_metering_secret}
410 ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
411 ceilometer::agent::auth::auth_url: {get_input: ceilometer_agent_auth_url}
412 ceilometer_compute_agent: {get_input: ceilometer_compute_agent}
413 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
414 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
415 nova::glance_api_servers: {get_input: glance_api_servers}
416 neutron::debug: {get_input: debug}
417 neutron::rabbit_password: {get_input: rabbit_password}
418 neutron::rabbit_user: {get_input: rabbit_username}
419 neutron::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
420 neutron::rabbit_port: {get_input: rabbit_client_port}
421 neutron_flat_networks: {get_input: neutron_flat_networks}
422 neutron_host: {get_input: neutron_host}
423 neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
425 neutron_tenant_network_type: {get_input: neutron_tenant_network_type}
426 neutron_tunnel_types: {get_input: neutron_tunnel_types}
427 neutron::plugins::ml2::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
428 neutron::plugins::ml2::tunnel_id_ranges: {get_input: neutron_tunnel_id_ranges}
429 neutron::plugins::ml2::vni_ranges: {get_input: neutron_vni_ranges}
430 neutron_bridge_mappings: {get_input: neutron_bridge_mappings}
431 neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
432 neutron::agents::ml2::ovs::l2_population: {get_input: neutron_enable_l2pop}
433 neutron_physical_bridge: {get_input: neutron_physical_bridge}
434 neutron_public_interface: {get_input: neutron_public_interface}
435 nova::network::neutron::neutron_admin_password: {get_input: neutron_password}
436 nova::network::neutron::neutron_url: {get_input: neutron_internal_url}
437 nova::network::neutron::neutron_admin_auth_url: {get_input: neutron_admin_auth_url}
438 neutron_router_distributed: {get_input: neutron_router_distributed}
439 neutron_agent_mode: {get_input: neutron_agent_mode}
440 neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
441 neutron::core_plugin: {get_input: neutron_core_plugin}
442 neutron::service_plugins: {get_input: neutron_service_plugins}
443 neutron::plugins::ml2::type_drivers: {get_input: neutron_type_drivers}
444 neutron_mechanism_drivers: {get_input: neutron_mechanism_drivers}
445 neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
446 admin_password: {get_input: admin_password}
447 ntp::servers: {get_input: ntp_servers}
448 tripleo::packages::enable_install: {get_input: enable_package_install}
449 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
451 NovaComputeDeployment:
452 type: OS::TripleO::SoftwareDeployment
453 depends_on: NetworkDeployment
455 config: {get_resource: NovaComputeConfig}
456 server: {get_resource: NovaCompute}
458 cinder_enable_nfs_backend: {get_param: CinderEnableNfsBackend}
459 debug: {get_param: Debug}
460 nova_compute_driver: {get_param: NovaComputeDriver}
461 nova_compute_libvirt_type: {get_param: NovaComputeLibvirtType}
462 nova_public_ip: {get_param: NovaPublicIP}
463 nova_api_host: {get_param: NovaApiHost}
464 nova_password: {get_param: NovaPassword}
465 nova_enable_rbd_backend: {get_param: NovaEnableRbdBackend}
466 cinder_enable_rbd_backend: {get_param: CinderEnableRbdBackend}
467 nova_vnc_proxyclient_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaVncProxyNetwork]}]}
468 ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
469 ceilometer_password: {get_param: CeilometerPassword}
470 ceilometer_compute_agent: {get_param: CeilometerComputeAgent}
471 ceilometer_agent_auth_url: {get_param: [EndpointMap, KeystoneInternal, uri]}
472 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
473 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
474 glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
475 neutron_flat_networks: {get_param: NeutronFlatNetworks}
476 neutron_host: {get_param: NeutronHost}
477 neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
478 neutron_tenant_network_type: {get_param: NeutronNetworkType}
479 neutron_tunnel_types: {get_param: NeutronTunnelTypes}
480 neutron_tunnel_id_ranges:
482 template: "['RANGES']"
487 - {get_param: NeutronTunnelIdRanges}
490 template: "['RANGES']"
495 - {get_param: NeutronVniRanges}
496 neutron_network_vlan_ranges:
498 template: "['RANGES']"
503 - {get_param: NeutronNetworkVLANRanges}
504 neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
505 neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
506 neutron_enable_l2pop: {get_param: NeutronEnableL2Pop}
507 neutron_physical_bridge: {get_param: NeutronPhysicalBridge}
508 neutron_public_interface: {get_param: NeutronPublicInterface}
509 neutron_password: {get_param: NeutronPassword}
510 neutron_agent_mode: {get_param: NeutronAgentMode}
511 neutron_router_distributed: {get_param: NeutronDVR}
512 neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
513 neutron_core_plugin: {get_param: NeutronCorePlugin}
514 neutron_service_plugins:
516 template: "['PLUGINS']"
521 - {get_param: NeutronServicePlugins}
522 neutron_type_drivers:
524 template: "['DRIVERS']"
529 - {get_param: NeutronTypeDrivers}
530 neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
531 neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
532 neutron_internal_url: {get_param: [EndpointMap, NeutronInternal, uri]}
533 neutron_admin_auth_url: {get_param: [EndpointMap, KeystoneAdmin, uri]}
534 admin_password: {get_param: AdminPassword}
535 rabbit_username: {get_param: RabbitUserName}
536 rabbit_password: {get_param: RabbitPassword}
537 rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
538 rabbit_client_port: {get_param: RabbitClientPort}
539 ntp_servers: {get_param: NtpServer}
540 enable_package_install: {get_param: EnablePackageInstall}
541 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
543 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
544 ComputeExtraConfigPre:
545 depends_on: NovaComputeDeployment
546 type: OS::TripleO::ComputeExtraConfigPre
548 server: {get_resource: NovaCompute}
550 # Hook for site-specific additional pre-deployment config,
551 # applying to all nodes, e.g node registration/unregistration
553 depends_on: ComputeExtraConfigPre
554 type: OS::TripleO::NodeExtraConfig
556 server: {get_resource: NovaCompute}
559 type: OS::TripleO::Tasks::PackageUpdate
562 type: OS::Heat::SoftwareDeployment
564 config: {get_resource: UpdateConfig}
565 server: {get_resource: NovaCompute}
568 get_param: UpdateIdentifier
572 description: IP address of the server in the ctlplane network
573 value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
574 internal_api_ip_address:
575 description: IP address of the server in the internal_api network
576 value: {get_attr: [InternalApiPort, ip_address]}
578 description: IP address of the server in the storage network
579 value: {get_attr: [StoragePort, ip_address]}
581 description: IP address of the server in the tenant network
582 value: {get_attr: [TenantPort, ip_address]}
584 description: Hostname of the server
585 value: {get_attr: [NovaCompute, name]}
588 Server's IP address and hostname in the /etc/hosts format
591 template: "IP HOST.localdomain HOST"
593 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
594 HOST: {get_attr: [NovaCompute, name]}
595 nova_server_resource:
596 description: Heat resource handle for the Nova compute server
598 {get_resource: NovaCompute}
600 description: identifier which changes if the node configuration may need re-applying
604 - - {get_attr: [NovaComputeDeployment, deploy_stdout]}
605 - {get_attr: [ComputeExtraConfigPre, deploy_stdout]}
606 - {get_param: UpdateIdentifier}