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.
30 description: Set to True to enable debugging on all services.
35 Additional configuration to inject into the cluster. The JSON should have
36 the following structure:
39 [{"section": "SECTIONNAME",
41 [{"option": "OPTIONNAME",
52 [{"section": "default",
54 [{"option": "force_config_drive",
62 "value": "nova.cells.rpc_driver.CellsRPCDriver"
71 description: Flavor for the nova compute node
74 - custom_constraint: nova.flavor
77 default: '' # Has to be here because of the ignored empty value bug
80 description: Glance port.
84 description: Protocol to use when connecting to glance, set to https for SSL.
88 default: overcloud-compute
90 - custom_constraint: glance.image
92 default: 'REBUILD_PRESERVE_EPHEMERAL'
93 description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
96 description: Name of an existing EC2 KeyPair to enable SSH access to the instances
100 - custom_constraint: nova.keypair
104 NeutronBridgeMappings:
106 The OVS logical->physical bridge mappings to use. See the Neutron
107 documentation for details. Defaults to mapping br-ex - the external
108 bridge on hosts - to a physical name 'datacentre' which can be used
109 to create provider networks (and we use this for the default floating
110 network) - if changing this either use different post-install network
111 scripts or be sure to keep 'datacentre' as a mapping network name.
113 default: "datacentre:br-ex"
114 NeutronEnableTunnelling:
119 default: 'datacentre'
121 If set, flat networks to configure in neutron plugins.
124 default: '' # Has to be here because of the ignored empty value bug
127 description: The tenant network type for Neutron, either gre or vxlan.
129 NeutronNetworkVLANRanges:
130 default: 'datacentre'
132 The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
133 Neutron documentation for permitted values. Defaults to permitting any
134 VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
135 type: comma_delimited_list
138 description: The password for the neutron service account, used by neutron agents.
141 NeutronPhysicalBridge:
143 description: An OVS bridge to create for accessing external networks.
145 NeutronPublicInterface:
147 description: A port to add to the NeutronPhysicalBridge.
152 The tunnel types for the Neutron tenant network. To specify multiple
153 values, use a comma separated string, like so: 'gre,vxlan'
155 NeutronTunnelIdRanges:
157 Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges
158 of GRE tunnel IDs that are available for tenant network allocation
159 default: ["1:1000", ]
160 type: comma_delimited_list
163 Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges
164 of VXLAN VNI IDs that are available for tenant network allocation
165 default: ["1:1000", ]
166 type: comma_delimited_list
167 NeutronPublicInterfaceRawDevice:
173 NeutronMetadataProxySharedSecret:
175 description: Shared secret to prevent spoofing
177 NeutronMechanismDrivers:
178 default: 'openvswitch'
180 The mechanism drivers for the Neutron tenant network. To specify multiple
181 values, use a comma separated string, like so: 'openvswitch,l2_population'
183 # Not relevant for Computes, should be removed
184 NeutronAllowL3AgentFailover:
186 description: Allow automatic l3-agent failover
188 # Not relevant for Computes, should be removed
191 description: Whether to enable l3-agent HA
195 description: Agent mode for the neutron-l3-agent on the controller hosts
199 default: '' # Has to be here because of the ignored empty value bug
202 default: libvirt.LibvirtDriver
203 NovaComputeExtraConfig:
206 NovaCompute specific configuration to inject into the cluster. Same
207 structure as ExtraConfig.
209 NovaComputeLibvirtType:
212 NovaEnableRbdBackend:
214 description: Whether to enable or not the Rbd backend for Nova
218 description: The password for the nova service account, used by nova-api.
223 default: '' # Has to be here because of the ignored empty value bug
229 default: '' # Has to be here because of the ignored empty value bug
232 description: The password for RabbitMQ
237 description: The username for RabbitMQ
242 Rabbit client subscriber parameter to specify
243 an SSL connection to the RabbitMQ host.
247 description: Set rabbit subscriber port, change this if using SSL
249 SnmpdReadonlyUserName:
250 default: ro_snmp_user
251 description: The user name for SNMPd with readonly rights running on all Overcloud nodes
253 SnmpdReadonlyUserPassword:
255 description: The user password for SNMPd with readonly rights running on all Overcloud nodes
258 EnablePackageInstall:
260 description: Set to true to enable package installation via Puppet
264 description: Mapping of service_name -> network name. 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
280 type: OS::Nova::Server
285 get_param: ImageUpdatePolicy
286 flavor: {get_param: Flavor}
287 key_name: {get_param: KeyName}
290 user_data_format: SOFTWARE_CONFIG
291 user_data: {get_resource: NodeUserData}
292 name: {get_param: Hostname}
295 type: OS::TripleO::NodeUserData
298 type: OS::TripleO::Compute::Ports::InternalApiPort
300 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
303 type: OS::TripleO::Compute::Ports::StoragePort
305 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
308 type: OS::TripleO::Compute::Ports::TenantPort
310 ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
313 type: OS::TripleO::Network::Ports::NetIpMap
315 InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
316 StorageIp: {get_attr: [StoragePort, ip_address]}
317 TenantIp: {get_attr: [TenantPort, ip_address]}
320 type: OS::TripleO::Compute::Net::SoftwareConfig
322 InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
323 StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
324 TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
327 type: OS::TripleO::SoftwareDeployment
329 config: {get_resource: NetworkConfig}
330 server: {get_resource: NovaCompute}
332 bridge_name: {get_param: NeutronPhysicalBridge}
333 interface_name: {get_param: NeutronPublicInterface}
336 type: OS::Heat::StructuredConfig
338 group: os-apply-config
342 - heat_config_%{::deploy_config_name}
344 - ceph_cluster # provided by CephClusterConfig
346 - all_nodes # provided by allNodesConfig
351 raw_data: {get_file: hieradata/common.yaml}
353 raw_data: {get_file: hieradata/ceph.yaml}
355 raw_data: {get_file: hieradata/compute.yaml}
357 nova::debug: {get_input: debug}
358 nova::rabbit_userid: {get_input: rabbit_username}
359 nova::rabbit_password: {get_input: rabbit_password}
360 nova::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
361 nova::rabbit_port: {get_input: rabbit_client_port}
362 nova_compute_driver: {get_input: nova_compute_driver}
363 nova::compute::libvirt::libvirt_virt_type: {get_input: nova_compute_libvirt_type}
364 nova_api_host: {get_input: nova_api_host}
365 nova::compute::vncproxy_host: {get_input: nova_public_ip}
366 nova::compute::rbd::ephemeral_storage: {get_input: nova_enable_rbd_backend}
367 nova_password: {get_input: nova_password}
368 nova::compute::vncserver_proxyclient_address: {get_input: nova_vnc_proxyclient_address}
369 ceilometer::debug: {get_input: debug}
370 ceilometer::rabbit_userid: {get_input: rabbit_username}
371 ceilometer::rabbit_password: {get_input: rabbit_password}
372 ceilometer::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
373 ceilometer::rabbit_port: {get_input: rabbit_client_port}
374 ceilometer::metering_secret: {get_input: ceilometer_metering_secret}
375 ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
376 ceilometer::agent::auth::auth_url: {get_input: ceilometer_agent_auth_url}
377 ceilometer_compute_agent: {get_input: ceilometer_compute_agent}
378 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
379 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
380 nova::glance_api_servers: {get_input: glance_api_servers}
381 neutron::debug: {get_input: debug}
382 neutron::rabbit_password: {get_input: rabbit_password}
383 neutron::rabbit_user: {get_input: rabbit_user}
384 neutron::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
385 neutron::rabbit_port: {get_input: rabbit_client_port}
386 neutron_flat_networks: {get_input: neutron_flat_networks}
387 neutron_host: {get_input: neutron_host}
388 neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
390 neutron_tenant_network_type: {get_input: neutron_tenant_network_type}
391 neutron_tunnel_types: {get_input: neutron_tunnel_types}
392 neutron::plugins::ml2::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
393 neutron::plugins::ml2::tunnel_id_ranges: {get_input: neutron_tunnel_id_ranges}
394 neutron::plugins::ml2::vni_ranges: {get_input: neutron_vni_ranges}
395 neutron_bridge_mappings: {get_input: neutron_bridge_mappings}
396 neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
397 neutron_physical_bridge: {get_input: neutron_physical_bridge}
398 neutron_public_interface: {get_input: neutron_public_interface}
399 nova::network::neutron::neutron_admin_password: {get_input: neutron_password}
400 nova::network::neutron::neutron_url: {get_input: neutron_url}
401 nova::network::neutron::neutron_admin_auth_url: {get_input: neutron_admin_auth_url}
402 neutron_router_distributed: {get_input: neutron_router_distributed}
403 neutron_agent_mode: {get_input: neutron_agent_mode}
404 neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
405 neutron_mechanism_drivers: {get_input: neutron_mechanism_drivers}
406 neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
407 admin_password: {get_input: admin_password}
408 ntp::servers: {get_input: ntp_servers}
409 enable_package_install: {get_input: enable_package_install}
411 NovaComputeDeployment:
412 type: OS::TripleO::SoftwareDeployment
413 depends_on: NetworkDeployment
415 config: {get_resource: NovaComputeConfig}
416 server: {get_resource: NovaCompute}
418 debug: {get_param: Debug}
419 nova_compute_driver: {get_param: NovaComputeDriver}
420 nova_compute_libvirt_type: {get_param: NovaComputeLibvirtType}
421 nova_public_ip: {get_param: NovaPublicIP}
422 nova_api_host: {get_param: NovaApiHost}
423 nova_password: {get_param: NovaPassword}
424 nova_enable_rbd_backend: {get_param: NovaEnableRbdBackend}
425 nova_vnc_proxyclient_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaVncProxyNetwork]}]}
426 ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
427 ceilometer_password: {get_param: CeilometerPassword}
428 ceilometer_compute_agent: {get_param: CeilometerComputeAgent}
429 ceilometer_agent_auth_url:
433 - {get_param: KeystoneHost}
435 snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
436 snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
440 - - {get_param: GlanceProtocol}
442 - {get_param: GlanceHost}
444 - {get_param: GlancePort}
445 neutron_flat_networks: {get_param: NeutronFlatNetworks}
446 neutron_host: {get_param: NeutronHost}
447 neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
448 neutron_tenant_network_type: {get_param: NeutronNetworkType}
449 neutron_tunnel_types: {get_param: NeutronTunnelTypes}
450 neutron_tunnel_id_ranges:
452 template: "['RANGES']"
457 - {get_param: NeutronTunnelIdRanges}
460 template: "['RANGES']"
465 - {get_param: NeutronVniRanges}
466 neutron_network_vlan_ranges:
468 template: "['RANGES']"
473 - {get_param: NeutronNetworkVLANRanges}
474 neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
475 neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
476 neutron_physical_bridge: {get_param: NeutronPhysicalBridge}
477 neutron_public_interface: {get_param: NeutronPublicInterface}
478 neutron_password: {get_param: NeutronPassword}
479 neutron_agent_mode: {get_param: NeutronAgentMode}
480 neutron_router_distributed: {get_param: NeutronDVR}
481 neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
482 neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
483 neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
488 - {get_param: NeutronHost}
490 neutron_admin_auth_url:
494 - {get_param: NeutronHost}
496 admin_password: {get_param: AdminPassword}
497 rabbit_username: {get_param: RabbitUserName}
498 rabbit_password: {get_param: RabbitPassword}
499 rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
500 rabbit_client_port: {get_param: RabbitClientPort}
503 template: '["server"]'
505 server: {get_param: NtpServer}
506 enable_package_install: {get_param: EnablePackageInstall}
509 type: OS::TripleO::Tasks::PackageUpdate
512 type: OS::Heat::SoftwareDeployment
514 config: {get_resource: UpdateConfig}
515 server: {get_resource: NovaCompute}
518 get_param: UpdateIdentifier
522 description: IP address of the server in the ctlplane network
523 value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
524 internal_api_ip_address:
525 description: IP address of the server in the internal_api network
526 value: {get_attr: [InternalApiPort, ip_address]}
528 description: IP address of the server in the storage network
529 value: {get_attr: [StoragePort, ip_address]}
531 description: IP address of the server in the tenant network
532 value: {get_attr: [TenantPort, ip_address]}
534 description: Hostname of the server
535 value: {get_attr: [NovaCompute, name]}
538 Server's IP address and hostname in the /etc/hosts format
541 template: "IP HOST.localdomain HOST"
543 IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
544 HOST: {get_attr: [NovaCompute, name]}
545 nova_server_resource:
546 description: Heat resource handle for the Nova compute server
548 {get_resource: NovaCompute}
550 description: identifier which changes if the node configuration may need re-applying
551 value: {get_attr: [NovaComputeDeployment, deploy_stdout]}