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
155 The core plugin for Neutron. The value should be the entrypoint to be loaded
156 from neutron.core_plugins namespace.
158 NeutronServicePlugins:
161 Comma-separated list of service plugin entrypoints to be loaded from the
162 neutron.service_plugins namespace.
163 type: comma_delimited_list
165 default: "vxlan,vlan,flat,gre"
167 Comma-separated list of network type driver entrypoints to be loaded.
168 type: comma_delimited_list
169 NeutronMechanismDrivers:
170 default: 'openvswitch'
172 The mechanism drivers for the Neutron tenant network. To specify multiple
173 values, use a comma separated string, like so: 'openvswitch,l2_population'
175 # Not relevant for Computes, should be removed
176 NeutronAllowL3AgentFailover:
178 description: Allow automatic l3-agent failover
180 # Not relevant for Computes, should be removed
183 description: Whether to enable l3-agent HA
187 description: Agent mode for the neutron-l3-agent on the controller hosts
191 default: '' # Has to be here because of the ignored empty value bug
194 default: libvirt.LibvirtDriver
195 NovaComputeExtraConfig:
198 NovaCompute specific configuration to inject into the cluster. Same
199 structure as ExtraConfig.
201 NovaComputeLibvirtType:
204 NovaComputeLibvirtVifDriver:
206 description: Libvirt VIF driver configuration for the network
208 NovaEnableRbdBackend:
210 description: Whether to enable or not the Rbd backend for Nova
214 description: The password for the nova service account, used by nova-api.
219 default: '' # Has to be here because of the ignored empty value bug
222 description: Name of integration bridge used by Open vSwitch
224 NovaSecurityGroupAPI:
226 description: The full class name of the security API class
233 default: '' # Has to be here because of the ignored empty value bug
236 description: The password for RabbitMQ
241 description: The username for RabbitMQ
246 Rabbit client subscriber parameter to specify
247 an SSL connection to the RabbitMQ host.
251 description: Set rabbit subscriber port, change this if using SSL
253 SnmpdReadonlyUserName:
254 default: ro_snmp_user
255 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
257 SnmpdReadonlyUserPassword:
259 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
262 EnablePackageInstall:
264 description: Set to true to enable package installation via Puppet
268 description: Mapping of service_name -> network name. Typically set
269 via parameter_defaults in the resource registry.
275 Setting to a previously unused value during stack-update will trigger
276 package update on all nodes
279 default: '' # Defaults to Heat created hostname
284 type: OS::Nova::Server
289 get_param: ImageUpdatePolicy
290 flavor: {get_param: Flavor}
291 key_name: {get_param: KeyName}
294 user_data_format: SOFTWARE_CONFIG
295 user_data: {get_resource: UserData}
296 name: {get_param: Hostname}
298 # Combine the NodeAdminUserData and NodeUserData mime archives
300 type: OS::Heat::MultipartMime
303 - config: {get_resource: NodeAdminUserData}
305 - config: {get_resource: NodeUserData}
308 # Creates the "heat-admin" user if configured via the environment
309 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
311 type: OS::TripleO::NodeAdminUserData
313 # For optional operator additional userdata
314 # Should return a OS::Heat::MultipartMime reference via OS::stack_id
316 type: OS::TripleO::NodeUserData
319 type: OS::TripleO::Compute::Ports::InternalApiPort
321 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
324 type: OS::TripleO::Compute::Ports::StoragePort
326 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
329 type: OS::TripleO::Compute::Ports::TenantPort
331 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
334 type: OS::TripleO::Network::Ports::NetIpMap
336 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
337 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
338 StorageIp: {get_attr: [StoragePort, ip_address]}
339 TenantIp: {get_attr: [TenantPort, ip_address]}
342 type: OS::TripleO::Compute::Net::SoftwareConfig
344 ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
345 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
346 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
347 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
350 type: OS::TripleO::SoftwareDeployment
352 config: {get_resource: NetworkConfig}
353 server: {get_resource: NovaCompute}
355 bridge_name: {get_param: NeutronPhysicalBridge}
356 interface_name: {get_param: NeutronPublicInterface}
359 type: OS::Heat::StructuredConfig
361 group: os-apply-config
366 - heat_config_%{::deploy_config_name}
367 - compute_extraconfig
370 - ceph_cluster # provided by CephClusterConfig
372 - all_nodes # provided by allNodesConfig
375 - cisco_n1kv_data # Optionally provided by ComputeExtraConfigPre
378 mapped_data: {get_param: NovaComputeExtraConfig}
380 mapped_data: {get_param: ExtraConfig}
382 raw_data: {get_file: hieradata/common.yaml}
384 raw_data: {get_file: hieradata/ceph.yaml}
386 raw_data: {get_file: hieradata/compute.yaml}
388 cinder_enable_nfs_backend: {get_input: cinder_enable_nfs_backend}
389 nova::debug: {get_input: debug}
390 nova::rabbit_userid: {get_input: rabbit_username}
391 nova::rabbit_password: {get_input: rabbit_password}
392 nova::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
393 nova::rabbit_port: {get_input: rabbit_client_port}
394 nova_compute_driver: {get_input: nova_compute_driver}
395 nova::compute::libvirt::libvirt_virt_type: {get_input: nova_compute_libvirt_type}
396 nova::compute::neutron::libvirt_vif_driver: {get_input: nova_compute_libvirt_vif_driver}
397 nova_api_host: {get_input: nova_api_host}
398 nova::compute::vncproxy_host: {get_input: nova_public_ip}
399 nova::compute::rbd::ephemeral_storage: {get_input: nova_enable_rbd_backend}
400 nova_password: {get_input: nova_password}
401 nova::compute::vncserver_proxyclient_address: {get_input: nova_vnc_proxyclient_address}
402 nova::network::neutron::neutron_ovs_bridge: {get_input: nova_ovs_bridge}
403 nova::network::neutron::security_group_api: {get_input: nova_security_group_api}
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_user}
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_physical_bridge: {get_input: neutron_physical_bridge}
433 neutron_public_interface: {get_input: neutron_public_interface}
434 nova::network::neutron::neutron_admin_password: {get_input: neutron_password}
435 nova::network::neutron::neutron_url: {get_input: neutron_url}
436 nova::network::neutron::neutron_admin_auth_url: {get_input: neutron_admin_auth_url}
437 neutron_router_distributed: {get_input: neutron_router_distributed}
438 neutron_agent_mode: {get_input: neutron_agent_mode}
439 neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
440 neutron::core_plugin: {get_input: neutron_core_plugin}
441 neutron::service_plugins: {get_input: neutron_service_plugins}
442 neutron::plugins::ml2::type_drivers: {get_input: neutron_type_drivers}
443 neutron_mechanism_drivers: {get_input: neutron_mechanism_drivers}
444 neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
445 admin_password: {get_input: admin_password}
446 ntp::servers: {get_input: ntp_servers}
447 tripleo::packages::enable_install: {get_input: enable_package_install}
448 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
450 NovaComputeDeployment:
451 type: OS::TripleO::SoftwareDeployment
452 depends_on: NetworkDeployment
454 config: {get_resource: NovaComputeConfig}
455 server: {get_resource: NovaCompute}
457 cinder_enable_nfs_backend: {get_param: CinderEnableNfsBackend}
458 debug: {get_param: Debug}
459 nova_compute_driver: {get_param: NovaComputeDriver}
460 nova_compute_libvirt_type: {get_param: NovaComputeLibvirtType}
461 nova_compute_libvirt_vif_driver: {get_param: NovaComputeLibvirtVifDriver}
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 nova_vnc_proxyclient_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaVncProxyNetwork]}]}
467 nova_ovs_bridge: {get_param: NovaOVSBridge}
468 nova_security_group_api: {get_param: NovaSecurityGroupAPI}
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:
476 - {get_param: KeystonePublicApiVirtualIP}
478 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
479 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
483 - - {get_param: GlanceProtocol}
485 - {get_param: GlanceHost}
487 - {get_param: GlancePort}
488 neutron_flat_networks: {get_param: NeutronFlatNetworks}
489 neutron_host: {get_param: NeutronHost}
490 neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
491 neutron_tenant_network_type: {get_param: NeutronNetworkType}
492 neutron_tunnel_types: {get_param: NeutronTunnelTypes}
493 neutron_tunnel_id_ranges:
495 template: "['RANGES']"
500 - {get_param: NeutronTunnelIdRanges}
503 template: "['RANGES']"
508 - {get_param: NeutronVniRanges}
509 neutron_network_vlan_ranges:
511 template: "['RANGES']"
516 - {get_param: NeutronNetworkVLANRanges}
517 neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
518 neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
519 neutron_physical_bridge: {get_param: NeutronPhysicalBridge}
520 neutron_public_interface: {get_param: NeutronPublicInterface}
521 neutron_password: {get_param: NeutronPassword}
522 neutron_agent_mode: {get_param: NeutronAgentMode}
523 neutron_router_distributed: {get_param: NeutronDVR}
524 neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
525 neutron_core_plugin: {get_param: NeutronCorePlugin}
526 neutron_service_plugins:
528 template: "['PLUGINS']"
533 - {get_param: NeutronServicePlugins}
534 neutron_type_drivers:
536 template: "['DRIVERS']"
541 - {get_param: NeutronTypeDrivers}
542 neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
543 neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
548 - {get_param: NeutronHost}
550 neutron_admin_auth_url:
554 - {get_param: KeystoneAdminApiVirtualIP}
556 admin_password: {get_param: AdminPassword}
557 rabbit_username: {get_param: RabbitUserName}
558 rabbit_password: {get_param: RabbitPassword}
559 rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
560 rabbit_client_port: {get_param: RabbitClientPort}
563 template: '["server"]'
565 server: {get_param: NtpServer}
566 enable_package_install: {get_param: EnablePackageInstall}
567 enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
569 # Hook for site-specific additional pre-deployment config, e.g extra hieradata
570 ComputeExtraConfigPre:
571 depends_on: NovaComputeDeployment
572 type: OS::TripleO::ComputeExtraConfigPre
574 server: {get_resource: NovaCompute}
576 # Hook for site-specific additional pre-deployment config,
577 # applying to all nodes, e.g node registration/unregistration
579 depends_on: ComputeExtraConfigPre
580 type: OS::TripleO::NodeExtraConfig
582 server: {get_resource: NovaCompute}
585 type: OS::TripleO::Tasks::PackageUpdate
588 type: OS::Heat::SoftwareDeployment
590 config: {get_resource: UpdateConfig}
591 server: {get_resource: NovaCompute}
594 get_param: UpdateIdentifier
598 description: IP address of the server in the ctlplane network
599 value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
600 internal_api_ip_address:
601 description: IP address of the server in the internal_api network
602 value: {get_attr: [InternalApiPort, ip_address]}
604 description: IP address of the server in the storage network
605 value: {get_attr: [StoragePort, ip_address]}
607 description: IP address of the server in the tenant network
608 value: {get_attr: [TenantPort, ip_address]}
610 description: Hostname of the server
611 value: {get_attr: [NovaCompute, name]}
614 Server's IP address and hostname in the /etc/hosts format
617 template: "IP HOST.localdomain HOST"
619 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
620 HOST: {get_attr: [NovaCompute, name]}
621 nova_server_resource:
622 description: Heat resource handle for the Nova compute server
624 {get_resource: NovaCompute}
626 description: identifier which changes if the node configuration may need re-applying
630 - - {get_attr: [NovaComputeDeployment, deploy_stdout]}
631 - {get_attr: [ComputeExtraConfigPre, deploy_stdout]}
632 - {get_param: UpdateIdentifier}