cookbook-openstack-compute/templates/default/nova.conf.erb

973 lines
41 KiB
Plaintext

<%= node["openstack"]["compute"]["custom_template_banner"] %>
[DEFAULT]
# LOGS/STATE
debug=<%= node["openstack"]["compute"]["debug"] %>
verbose=<%= node["openstack"]["compute"]["verbose"] %>
auth_strategy=<%= node["openstack"]["compute"]["api"]["auth_strategy"] %>
dhcpbridge_flagfile=/etc/nova/nova.conf
dhcpbridge=/usr/bin/nova-dhcpbridge
log_dir=<%= node["openstack"]["compute"]["log_dir"] %>
<% if node["openstack"]["compute"]["syslog"]["use"] %>
log_config = /etc/openstack/logging.conf
<% end %>
state_path=<%= node["openstack"]["compute"]["state_path"] %>
instances_path=<%= node["openstack"]["compute"]["instances_path"] %>
instance_name_template=<%= node["openstack"]["compute"]["instance_name_template"] %>
network_allocate_retries=<%= node['openstack']['compute']['network_allocate_retries'] %>
ssl_only=<%= node['openstack']['compute']['ssl_only'] %>
cert=<%= node['openstack']['compute']['cert'] %>
key=<%= node['openstack']['compute']['key'] %>
# Command prefix to use for running commands as root (default: sudo)
rootwrap_config=/etc/nova/rootwrap.conf
# Should unused base images be removed? (default: false)
remove_unused_base_images=<%= node["openstack"]["compute"]["libvirt"]["remove_unused_base_images"] %>
# Unused unresized base images younger than this will not be removed (default: 86400)
remove_unused_original_minimum_age_seconds=<%= node["openstack"]["compute"]["libvirt"]["remove_unused_original_minimum_age_seconds"] %>
# Options defined in nova.openstack.common.rpc
rpc_thread_pool_size=<%= node["openstack"]["compute"]["rpc_thread_pool_size"] %>
rpc_conn_pool_size=<%= node["openstack"]["compute"]["rpc_conn_pool_size"] %>
rpc_response_timeout=<%= node["openstack"]["compute"]["rpc_response_timeout"] %>
rpc_backend=<%= node["openstack"]["compute"]["rpc_backend"] %>
##### SCHEDULER #####
# Flag to decide whether to use baremetal_scheduler_default_filters or not (boolean value).
scheduler_use_baremetal_filters=<%= node["openstack"]["compute"]["scheduler"]["use_baremetal_filters"] %>
# Which filter class names to use for filtering baremetal hosts when not specified in the request.
baremetal_scheduler_default_filters=<%= node["openstack"]["compute"]["scheduler"]["baremetal_default_filters"].join(",") %>
scheduler_manager=<%= node["openstack"]["compute"]["scheduler"]["scheduler_manager"] %>
scheduler_driver=<%= node["openstack"]["compute"]["scheduler"]["scheduler_driver"] %>
scheduler_available_filters=<%= node["openstack"]["compute"]["scheduler"]["available_filters"] %>
# which filter class names to use for filtering hosts when not specified in the request.
scheduler_default_filters=<%= @scheduler_default_filters %>
default_availability_zone=<%= node["openstack"]["compute"]["config"]["availability_zone"] %>
default_schedule_zone=<%= node["openstack"]["compute"]["config"]["default_schedule_zone"] %>
scheduler_host_manager=<%= node["openstack"]["compute"]["scheduler"]["scheduler_host_manager"] %>
##### NETWORK #####
<% case node["openstack"]["compute"]["network"]["service_type"]
when "neutron" -%>
network_api_class=<%= node["openstack"]["compute"]["network"]["neutron"]["network_api_class"] %>
linuxnet_interface_driver=<%= node["openstack"]["compute"]["network"]["neutron"]["linuxnet_interface_driver"] %>
firewall_driver = nova.virt.firewall.NoopFirewallDriver
security_group_api=<%= node["openstack"]["compute"]["network"]["neutron"]["security_group_api"] %>
default_floating_pool=<%= node["openstack"]["compute"]["network"]["neutron"]["public_network_name"] %>
dns_server=<%= node["openstack"]["compute"]["network"]["neutron"]["dns_server"] %>
<% when "nova" -%>
multi_host=<%= node["openstack"]["compute"]["network"]["multi_host"] %>
network_manager=<%= node["openstack"]["compute"]["network"]["network_manager"] %>
public_interface=<%= node["openstack"]["compute"]["network"]["public_interface"] %>
dmz_cidr=<%= node["openstack"]["compute"]["network"]["dmz_cidr"] %>
force_dhcp_release=<%= node["openstack"]["compute"]["network"]["force_dhcp_release"] %>
<% if node["openstack"]["compute"]["dhcp_domain"] -%>
dhcp_domain=<%= node["openstack"]["compute"]["dhcp_domain"] %>
<% end %>
send_arp_for_ha=true
use_single_default_gateway=<%= node["openstack"]["compute"]["network"]["use_single_default_gateway"] %>
vlan_interface=<%= node["openstack"]["compute"]["network"]["vlan_interface"] %>
auto_assign_floating_ip=<%= node["openstack"]["compute"]["network"]["auto_assign_floating_ip"] %>
<% end -%>
use_ipv6=<%= node["openstack"]["compute"]["network"]["use_ipv6"] %>
##### GLANCE #####
image_service=nova.image.glance.GlanceImageService
##### COMPUTE #####
compute_driver=<%= node["openstack"]["compute"]["driver"] %>
<% if node["openstack"]["compute"]["default_ephemeral_format"] %>
default_ephemeral_format=<%= node["openstack"]["compute"]["default_ephemeral_format"] %>
<% end %>
preallocate_images=<%= node["openstack"]["compute"]["preallocate_images"] %>
use_cow_images=<%= node["openstack"]["compute"]["use_cow_images"] %>
vif_plugging_is_fatal=<%= node["openstack"]["compute"]["vif_plugging_is_fatal"] %>
vif_plugging_timeout=<%= node["openstack"]["compute"]["vif_plugging_timeout"] %>
compute_manager=<%= node["openstack"]["compute"]["manager"] %>
connection_type=libvirt
##### NOTIFICATIONS #####
<% if node['openstack']['compute']['config']['notification_drivers'] %>
# Driver or drivers to handle sending notifications (multi valued)
<% node['openstack']['compute']['config']['notification_drivers'].each do |d| %>
notification_driver=<%= d %>
<% end %>
<% end %>
<% if node['openstack']['compute']['config']['notification_topics'] %>
# AMQP topic used for OpenStack notifications. (list value)
# Deprecated group/name - [rpc_notifier2]/topics
notification_topics=<%= node['openstack']['compute']['config']['notification_topics'].join(",") %>
<% end %>
# Generate periodic compute.instance.exists notifications
instance_usage_audit=<%= node['openstack']['compute']['config']['instance_usage_audit'] %>
# Time period to generate instance usages for. Time period
# must be hour, day, month or year (string value)
instance_usage_audit_period=<%= node['openstack']['compute']['config']['instance_usage_audit_period'] %>
<% unless node['openstack']['compute']['config']['notify_on_state_change'].empty? -%>
# If set, send compute.instance.update notifications on
# instance state changes. Valid values are None for no
# notifications, "vm_state" for notifications on VM state
# changes, or "vm_and_task_state" for notifications on VM and
# task state changes. (string value)
notify_on_state_change=<%= node['openstack']['compute']['config']['notify_on_state_change'] %>
<% end %>
<% if node["openstack"]["compute"]["enabled_apis"].include?("osapi_compute") -%>
# The IP address on which the OpenStack API will listen. (string value)
osapi_compute_listen=<%= @compute_api_bind_ip %>
# The port on which the OpenStack API will listen. (integer value)
osapi_compute_listen_port=<%= @compute_api_bind_port %>
<% end -%>
# The IP address on which the metadata will listen. (string value)
metadata_listen=<%= @compute_metadata_api_bind_ip %>
# The port on which the metadata will listen. (integer value)
metadata_listen_port=<%= @compute_metadata_api_bind_port %>
##### VNCPROXY #####
novncproxy_base_url=<%= @novncproxy_base_url %>
xvpvncproxy_base_url=<%= @xvpvncproxy_base_url %>
# This is only required on the server running xvpvncproxy
xvpvncproxy_host=<%= @xvpvncproxy_bind_host %>
xvpvncproxy_port=<%= @xvpvncproxy_bind_port %>
# This is only required on the server running novncproxy
novncproxy_host=<%= @novncproxy_bind_host %>
novncproxy_port=<%= @novncproxy_bind_port %>
vncserver_listen=<%= @vncserver_listen %>
vncserver_proxyclient_address=<%= @vncserver_proxyclient_address %>
# Enable VNC related features (boolean value)
vnc_enabled=<%= node['openstack']['compute']['vnc']['enabled'] %>
vnc_keymap=<%= node['openstack']['compute']['vnc']['keymap'] %>
# store consoleauth tokens in memcached
<% unless @memcache_servers.empty? -%>
memcached_servers=<%= @memcache_servers %>
<% end -%>
##### MISC #####
# force backing images to raw format
force_raw_images=<%= node["openstack"]["compute"]["config"]["force_raw_images"] %>
allow_same_net_traffic=<%= node["openstack"]["compute"]["config"]["allow_same_net_traffic"] %>
osapi_max_limit=<%= node["openstack"]["compute"]["config"]["osapi_max_limit"] %>
# If you terminate SSL with a load balancer, the HTTP_HOST environ
# variable that generates the request_uri in webob.Request will lack
# the HTTPS scheme. Setting this overrides the default and allows
# URIs returned in the various links collections to contain the proper
# HTTPS endpoint.
<% if node["openstack"]["compute"]["config"]["osapi_compute_link_prefix"] %>
osapi_compute_link_prefix=<%= node["openstack"]["compute"]["config"]["osapi_compute_link_prefix"] -%>
<% end -%>
<% if node["openstack"]["compute"]["config"]["osapi_glance_link_prefix"] %>
osapi_glance_link_prefix=<%= node["openstack"]["compute"]["config"]["osapi_glance_link_prefix"] -%>
<% end -%>
start_guests_on_host_boot=<%= node["openstack"]["compute"]["config"]["start_guests_on_host_boot"] %>
resume_guests_state_on_host_boot=<%= node["openstack"]["compute"]["config"]["resume_guests_state_on_host_boot"] %>
allow_resize_to_same_host=<%= node["openstack"]["compute"]["config"]["allow_resize_to_same_host"] %>
resize_confirm_window=<%= node["openstack"]["compute"]["config"]["resize_confirm_window"] %>
# (IntOpt) Number of seconds between instance network information cache updates.
heal_instance_info_cache_interval=<%= node['openstack']['compute']['config']['heal_instance_info_cache_interval'] %>
live_migration_retry_count=<%= node["openstack"]["compute"]["config"]["live_migration_retry_count"] %>
##### QUOTAS #####
# (StrOpt) default driver to use for quota checks (default: nova.quota.DbQuotaDriver)
quota_driver=<%= node["openstack"]["compute"]["config"]["quota_driver"] %>
# number of security groups per project (default: 10)
quota_security_groups=<%= node["openstack"]["compute"]["config"]["quota_security_groups"] %>
# number of security rules per security group (default: 20)
quota_security_group_rules=<%= node["openstack"]["compute"]["config"]["quota_security_group_rules"] %>
# number of instance cores allowed per project (default: 20)
quota_cores=<%= node["openstack"]["compute"]["config"]["quota_cores"] %>
# number of fixed ips allowed per project (this should be at least the number of instances allowed) (default: -1)
quota_fixed_ips=<%= node["openstack"]["compute"]["config"]["quota_fixed_ips"] %>
# number of floating ips allowed per project (default: 10)
quota_floating_ips=<%= node["openstack"]["compute"]["config"]["quota_floating_ips"] %>
# number of bytes allowed per injected file (default: 10240)
quota_injected_file_content_bytes=<%= node["openstack"]["compute"]["config"]["quota_injected_file_content_bytes"] %>
# number of bytes allowed per injected file path (default: 255)
quota_injected_file_path_length=<%= node["openstack"]["compute"]["config"]["quota_injected_file_path_length"] %>
# number of injected files allowed (default: 5)
quota_injected_files=<%= node["openstack"]["compute"]["config"]["quota_injected_files"] %>
# number of instances allowed per project (defailt: 10)
quota_instances=<%= node["openstack"]["compute"]["config"]["quota_instances"] %>
# number of key pairs per user (default: 100)
quota_key_pairs=<%= node["openstack"]["compute"]["config"]["quota_key_pairs"] %>
# number of metadata items allowed per instance (default: 128)
quota_metadata_items=<%= node["openstack"]["compute"]["config"]["quota_metadata_items"] %>
# megabytes of instance ram allowed per project (default: 51200)
quota_ram=<%= node["openstack"]["compute"]["config"]["quota_ram"] %>
<%- if /ComputeFilter/.match(@scheduler_default_filters) %>
# virtual CPU to Physical CPU allocation ratio (default: 16.0)
cpu_allocation_ratio=<%= node["openstack"]["compute"]["config"]["cpu_allocation_ratio"] %>
<%- end %>
<%- if /RamFilter/.match(@scheduler_default_filters) %>
# virtual ram to physical ram allocation ratio (default: 1.5)
ram_allocation_ratio=<%= node["openstack"]["compute"]["config"]["ram_allocation_ratio"] %>
<%- end %>
<%- if /DiskFilter/.match(@scheduler_default_filters) %>
# virtual disk to physical disk allocation ratio (default: 1.0)
disk_allocation_ratio=<%= node["openstack"]["compute"]["config"]["disk_allocation_ratio"] %>
<%- end %>
<% if node["openstack"]["compute"]["config"]["force_config_drive"] %>
force_config_drive=<%= node["openstack"]["compute"]["config"]["force_config_drive"] %>
<% end %>
config_drive_format=<%= node["openstack"]["compute"]["config"]["config_drive_format"] %>
mkisofs_cmd=<%= node["openstack"]["compute"]["config"]["mkisofs_cmd"] %>
injected_network_template=<%= node["openstack"]["compute"]["config"]["injected_network_template"] %>
flat_injected=<%= node["openstack"]["compute"]["config"]["flat_injected"] %>
# Amount of disk in MB to reserve for the host (default: 0)
reserved_host_disk_mb=<%= node["openstack"]["compute"]["config"]["reserved_host_disk_mb"] %>
# Amount of disk in MB to reserve for the host (default: 512)
reserved_host_memory_mb=<%= node["openstack"]["compute"]["config"]["reserved_host_memory_mb"] %>
<% if node["openstack"]["compute"]["enabled_apis"].include?("ec2") %>
# The IP address on which the EC2 API will listen. (string value)
ec2_listen=<%= @ec2_api_bind_ip %>
# The port on which the EC2 API will listen. (integer value)
ec2_listen_port=<%= @ec2_api_bind_port %>
<% if %w(fedora rhel).include? node.platform_family -%>
# Adding support for non-modded euca2ools to display ip address info
# https://bugs.launchpad.net/nova/+bug/901594
ec2_private_dns_show_ip=True
<% end -%>
##### WORKERS ######
<% if node["openstack"]["compute"]["ec2_workers"] %>
ec2_workers=<%= node["openstack"]["compute"]["ec2_workers"] %>
<% end %>
##### KEYSTONE #####
keystone_ec2_url=<%= @identity_endpoint.scheme %>://<%= @identity_endpoint.host %>:<%= @identity_endpoint.port %>/v2.0/ec2tokens
<% end -%>
# a list of APIs to enable by default (list value)
enabled_apis=<%= node["openstack"]["compute"]["enabled_apis"] %>
##### WORKERS ######
<% if node["openstack"]["compute"]["osapi_compute_workers"] %>
osapi_compute_workers=<%= node["openstack"]["compute"]["osapi_compute_workers"] %>
<% end %>
<% if node["openstack"]["compute"]["metadata_workers"] %>
metadata_workers=<%= node["openstack"]["compute"]["metadata_workers"] %>
<% end %>
##### MONITORS ######
<% node['openstack']['compute']['config']['compute_available_monitors'].each do |m| %>
# Monitor classes available to the compute which may be
# specified more than once. (multi valued)
compute_available_monitors=<%= m %>
<% end %>
<% if node["openstack"]["compute"]["config"]["compute_monitors"] %>
# A list of monitors that can be used for getting compute
# metrics. (list value)
compute_monitors=<%= node["openstack"]["compute"]["config"]["compute_monitors"].join(",") %>
<% end %>
##### VOLUMES #####
# iscsi target user-land tool to use
iscsi_helper=<%= @iscsi_helper %>
volume_api_class=<%= node["openstack"]["compute"]["config"]["volume_api_class"] %>
# Override the default dnsmasq settings with this file (String value)
dnsmasq_config_file=<%= node['openstack']['compute']['dnsmasq_config_file'] %>
##### THIRD PARTY ADDITIONS #####
<% if node["openstack"]["compute"]["plugins"] %>
<% node["openstack"]["compute"]["plugins"].each do |p| %>
osapi_compute_extension=<%= p %>
<% end %>
<% end %>
<% if node["openstack"]["compute"]["misc_nova"] %>
<% node["openstack"]["compute"]["misc_nova"].each do |m| %>
<%= m %>
<% end %>
<% end %>
[guestfs]
# Enable guestfs debug
debug=<%= node['openstack']['compute']['guestfs']['debug'] %>
[database]
#
# Options defined in oslo.db
#
# The file name to use with SQLite. (string value)
#sqlite_db=oslo.sqlite
# If True, SQLite uses synchronous mode. (boolean value)
#sqlite_synchronous=true
# The back end to use for the database. (string value)
# Deprecated group/name - [DEFAULT]/db_backend
#backend=sqlalchemy
# The SQLAlchemy connection string to use to connect to the
# database. (string value)
# Deprecated group/name - [DEFAULT]/sql_connection
# Deprecated group/name - [DATABASE]/sql_connection
# Deprecated group/name - [sql]/connection
connection=<%= @sql_connection %>
# The SQLAlchemy connection string to use to connect to the
# slave database. (string value)
#slave_connection=<None>
<% if node['openstack']['endpoints']['db']['enabled_slave'] %>
slave_connection=<%= @slave_connection %>
<% end %>
# The SQL mode to be used for MySQL sessions. This option,
# including the default, overrides any server-set SQL mode. To
# use whatever SQL mode is set by the server configuration,
# set this to no value. Example: mysql_sql_mode= (string
# value)
#mysql_sql_mode=TRADITIONAL
# Timeout before idle SQL connections are reaped. (integer
# value)
# Deprecated group/name - [DEFAULT]/sql_idle_timeout
# Deprecated group/name - [DATABASE]/sql_idle_timeout
# Deprecated group/name - [sql]/idle_timeout
#idle_timeout=3600
# Minimum number of SQL connections to keep open in a pool.
# (integer value)
# Deprecated group/name - [DEFAULT]/sql_min_pool_size
# Deprecated group/name - [DATABASE]/sql_min_pool_size
#min_pool_size=1
# Maximum number of SQL connections to keep open in a pool.
# (integer value)
# Deprecated group/name - [DEFAULT]/sql_max_pool_size
# Deprecated group/name - [DATABASE]/sql_max_pool_size
#max_pool_size=<None>
# Maximum number of database connection retries during
# startup. Set to -1 to specify an infinite retry count.
# (integer value)
# Deprecated group/name - [DEFAULT]/sql_max_retries
# Deprecated group/name - [DATABASE]/sql_max_retries
#max_retries=10
# Interval between retries of opening a SQL connection.
# (integer value)
# Deprecated group/name - [DEFAULT]/sql_retry_interval
# Deprecated group/name - [DATABASE]/reconnect_interval
#retry_interval=10
# If set, use this value for max_overflow with SQLAlchemy.
# (integer value)
# Deprecated group/name - [DEFAULT]/sql_max_overflow
# Deprecated group/name - [DATABASE]/sqlalchemy_max_overflow
#max_overflow=<None>
# Verbosity of SQL debugging information: 0=None,
# 100=Everything. (integer value)
# Deprecated group/name - [DEFAULT]/sql_connection_debug
#connection_debug=0
# Add Python stack traces to SQL as comment strings. (boolean
# value)
# Deprecated group/name - [DEFAULT]/sql_connection_trace
#connection_trace=false
# If set, use this value for pool_timeout with SQLAlchemy.
# (integer value)
# Deprecated group/name - [DATABASE]/sqlalchemy_pool_timeout
#pool_timeout=<None>
# Enable the experimental use of database reconnect on
# connection lost. (boolean value)
#use_db_reconnect=false
# Seconds between database connection retries. (integer value)
#db_retry_interval=1
# If True, increases the interval between database connection
# retries up to db_max_retry_interval. (boolean value)
#db_inc_retry_interval=true
# If db_inc_retry_interval is set, the maximum seconds between
# database connection retries. (integer value)
#db_max_retry_interval=10
# Maximum database connection retries before error is raised.
# Set to -1 to specify an infinite retry count. (integer
# value)
#db_max_retries=20
#
# Options defined in ironic.db.sqlalchemy.models
#
# MySQL engine to use. (string value)
#mysql_engine=InnoDB
[ssl]
# CA certificate file to use to verify connecting clients
ca_file=<%= node['openstack']['compute']['image']['ssl']['ca_file'] %>
# Certificate file to use when starting the server securely
cert_file=<%= node['openstack']['compute']['image']['ssl']['cert_file'] %>
# Private key file to use when starting the server securely
key_file=<%= node['openstack']['compute']['image']['ssl']['key_file'] %>
[conductor]
use_local=<%= node["openstack"]["compute"]["conductor"]["use_local"] %>
<% if node["openstack"]["compute"]["conductor"]["workers"] %>
workers=<%= node["openstack"]["compute"]["conductor"]["workers"] %>
<% end %>
<% if %w(vmwareapi.VMwareESXDriver vmwareapi.VMwareVCDriver).include?(node['openstack']['compute']['driver']) %>
[vmware]
#
# Options defined in nova.virt.vmwareapi.driver
#
# URL for connection to VMware ESX/VC host. (string value)
host_ip = <%= node['openstack']['compute']['vmware']['host_ip'] %>
# Username for connection to VMware ESX/VC host. (string
# value)
host_username = <%= node['openstack']['compute']['vmware']['host_username'] %>
# Password for connection to VMware ESX/VC host. (string
# value)
host_password = <%= @vmware_host_pass %>
<% if node['openstack']['compute']['vmware']['cluster_name'] %>
# Name of a VMware Cluster ComputeResource. Used only if
# compute_driver is vmwareapi.VMwareVCDriver. (multi valued)
<% node['openstack']['compute']['vmware']['cluster_name'].each do |cluster| %>
cluster_name = <%= cluster %>
<% end %>
<% end %>
<% if node['openstack']['compute']['vmware']['datastore_regex'] %>
# Regex to match the name of a datastore. (string value)
datastore_regex = <%= node['openstack']['compute']['vmware']['datastore_regex'] %>
<% end %>
# The interval used for polling of remote tasks. (floating
# point value)
task_poll_interval = <%= node['openstack']['compute']['vmware']['task_poll_interval'] %>
# The number of times we retry on failures, e.g., socket
# error, etc. (integer value)
api_retry_count = <%= node['openstack']['compute']['vmware']['api_retry_count'] %>
# VNC starting port (integer value)
vnc_port = <%= node['openstack']['compute']['vmware']['vnc_port'] %>
# Total number of VNC ports (integer value)
vnc_port_total = <%= node['openstack']['compute']['vmware']['vnc_port_total'] %>
# Whether to use linked clone (boolean value)
use_linked_clone = <%= node['openstack']['compute']['vmware']['use_linked_clone'] %>
#
# Options defined in nova.virt.vmwareapi.vif
#
# Physical ethernet adapter name for vlan networking (string
# value)
vlan_interface = <%= node['openstack']['compute']['vmware']['vlan_interface'] %>
<% if node['openstack']['compute']['vmware']['wsdl_location'] %>
#
# Options defined in nova.virt.vmwareapi.vim
#
# Optional VIM Service WSDL Location e.g
# http://<server>/vimService.wsdl. Optional over-ride to
# default location for bug work-arounds (string value)
wsdl_location = <%= node['openstack']['compute']['vmware']['wsdl_location'] %>
<% end %>
#
# Options defined in nova.virt.vmwareapi.vim_util
#
# The maximum number of ObjectContent data objects that should
# be returned in a single result. A positive value will cause
# the operation to suspend the retrieval when the count of
# objects reaches the specified maximum. The server may still
# limit the count to something less than the configured value.
# Any remaining objects may be retrieved with additional
# requests. (integer value)
maximum_objects = <%= node['openstack']['compute']['vmware']['maximum_objects'] %>
#
# Options defined in nova.virt.vmwareapi.vmops
#
# Name of Integration Bridge (string value)
integration_bridge = <%= node['openstack']['compute']['vmware']['integration_bridge'] %>
<% end %>
[libvirt]
#
# Options defined in nova.virt.libvirt.driver
#
# Rescue ami image (string value)
#rescue_image_id=<None>
# Rescue aki image (string value)
#rescue_kernel_id=<None>
# Rescue ari image (string value)
#rescue_ramdisk_id=<None>
# Libvirt domain type (valid options are: kvm, lxc, qemu, uml,
# xen) (string value)
# Deprecated group/name - [DEFAULT]/libvirt_type
virt_type=<%= node["openstack"]["compute"]["libvirt"]["virt_type"] %>
# Override the default libvirt URI (which is dependent on
# virt_type) (string value)
# Deprecated group/name - [DEFAULT]/libvirt_uri
#connection_uri=
# Inject the admin password at boot time, without an agent.
# (boolean value)
# Deprecated group/name - [DEFAULT]/libvirt_inject_password
inject_password=<%= node["openstack"]["compute"]["libvirt"]["libvirt_inject_password"] %>
# Inject the ssh public key at boot time (boolean value)
# Deprecated group/name - [DEFAULT]/libvirt_inject_key
inject_key=<%= node["openstack"]["compute"]["libvirt"]["libvirt_inject_key"] %>
# The partition to inject to : -2 => disable, -1 => inspect
# (libguestfs only), 0 => not partitioned, >0 => partition
# number (integer value)
# Deprecated group/name - [DEFAULT]/libvirt_inject_partition
inject_partition=<%= node["openstack"]["compute"]["libvirt"]["libvirt_inject_partition"] %>
# Sync virtual and real mouse cursors in Windows VMs (boolean value)
use_usb_tablet=<%= node["openstack"]["compute"]["config"]["use_usb_tablet"] %>
# Migration target URI (any included "%s" is replaced with the
# migration target hostname) (string value)
live_migration_uri=<%= node["openstack"]["compute"]["libvirt"]["live_migration_uri"] %>
# Migration flags to be set for live migration (string value)
live_migration_flag=<%= node["openstack"]["compute"]["libvirt"]["live_migration_flag"] %>
# Migration flags to be set for block migration (string value)
block_migration_flag=<%= node["openstack"]["compute"]["libvirt"]["block_migration_flag"] %>
# Maximum bandwidth to be used during migration, in Mbps
# (integer value)
live_migration_bandwidth=<%= node["openstack"]["compute"]["libvirt"]["live_migration_bandwidth"] %>
# Snapshot image format (valid options are : raw, qcow2, vmdk,
# vdi). Defaults to same as source image (string value)
snapshot_image_format=<%= node["openstack"]["compute"]["config"]["snapshot_image_format"] %>
# The libvirt VIF driver to configure the VIFs. (string value)
# Deprecated group/name - [DEFAULT]/libvirt_vif_driver
vif_driver=<%= node["openstack"]["compute"]["network"]["neutron"]["libvirt_vif_driver"] %>
# Libvirt handlers for remote volumes. (list value)
# Deprecated group/name - [DEFAULT]/libvirt_volume_drivers
#volume_drivers=iscsi=nova.virt.libvirt.volume.LibvirtISCSIVolumeDriver,iser=nova.virt.libvirt.volume.LibvirtISERVolumeDriver,local=nova.virt.libvirt.volume.LibvirtVolumeDriver,fake=nova.virt.libvirt.volume.LibvirtFakeVolumeDriver,rbd=nova.virt.libvirt.volume.LibvirtNetVolumeDriver,sheepdog=nova.virt.libvirt.volume.LibvirtNetVolumeDriver,nfs=nova.virt.libvirt.volume.LibvirtNFSVolumeDriver,aoe=nova.virt.libvirt.volume.LibvirtAOEVolumeDriver,glusterfs=nova.virt.libvirt.volume.LibvirtGlusterfsVolumeDriver,fibre_channel=nova.virt.libvirt.volume.LibvirtFibreChannelVolumeDriver,scality=nova.virt.libvirt.volume.LibvirtScalityVolumeDriver
# Override the default disk prefix for the devices attached to
# a server, which is dependent on virt_type. (valid options
# are: sd, xvd, uvd, vd) (string value)
# Deprecated group/name - [DEFAULT]/libvirt_disk_prefix
#disk_prefix=<None>
# Number of seconds to wait for instance to shut down after
# soft reboot request is made. We fall back to hard reboot if
# instance does not shutdown within this window. (integer
# value)
# Deprecated group/name - [DEFAULT]/libvirt_wait_soft_reboot_seconds
#wait_soft_reboot_seconds=120
# Set to "host-model" to clone the host CPU feature flags; to
# "host-passthrough" to use the host CPU model exactly; to
# "custom" to use a named CPU model; to "none" to not set any
# CPU model. If virt_type="kvm|qemu", it will default to
# "host-model", otherwise it will default to "none" (string
# value)
# Deprecated group/name - [DEFAULT]/libvirt_cpu_mode
<% if node["openstack"]["compute"]["libvirt"]["cpu_mode"] -%>
cpu_mode=<%= node["openstack"]["compute"]["libvirt"]["cpu_mode"] %>
<% elsif node["openstack"]["compute"]["libvirt"]["virt_type"] == "qemu" -%>
cpu_mode=none
<% end -%>
# Set to a named libvirt CPU model (see names listed in
# /usr/share/libvirt/cpu_map.xml). Only has effect if
# cpu_mode="custom" and virt_type="kvm|qemu" (string value)
# Deprecated group/name - [DEFAULT]/libvirt_cpu_model
#cpu_model=<none>
# Location where libvirt driver will store snapshots before
# uploading them to image service (string value)
# Deprecated group/name - [DEFAULT]/libvirt_snapshots_directory
#snapshots_directory=$instances_path/snapshots
# Location where the Xen hvmloader is kept (string value)
#xen_hvmloader_path=/usr/lib/xen/boot/hvmloader
# Specific cachemodes to use for different disk types e.g:
# file=directsync,block=none (list value)
<% if node["openstack"]["compute"]["config"]["disk_cachemodes"] %>
disk_cachemodes=<%= node["openstack"]["compute"]["config"]["disk_cachemodes"] %>
<% end %>
# A path to a device that will be used as source of entropy on
# the host. Permitted options are: /dev/random or /dev/hwrng
# (string value)
<% if node["openstack"]["compute"]["libvirt"]["rng_dev_path"] -%>
rng_dev_path=<%= node["openstack"]["compute"]["libvirt"]["rng_dev_path"] %>
<% end -%>
#
# Options defined in nova.virt.libvirt.imagecache
#
# Unused resized base images younger than this will not be removed (default: 3600)
remove_unused_resized_minimum_age_seconds=<%= node["openstack"]["compute"]["libvirt"]["remove_unused_resized_minimum_age_seconds"] %>
# Write a checksum for files in _base to disk (default: false)
checksum_base_images=<%= node["openstack"]["compute"]["libvirt"]["checksum_base_images"] %>
#
# Options defined in nova.virt.libvirt.vif
#
<% if node["openstack"]["compute"]["libvirt"]["virt_type"] == "qemu" -%>
use_virtio_for_bridges=false
<% else -%>
use_virtio_for_bridges=true
<% end -%>
#
# Options defined in nova.virt.libvirt.imagebackend
#
# VM Images format. Acceptable values are: raw, qcow2, lvm, rbd, default. If default is specified,
# then use_cow_images flag is used instead of this one.
images_type=<%= node['openstack']['compute']['libvirt']['images_type'] %>
<% if node['openstack']['compute']['libvirt']['images_type'] == 'lvm' -%>
images_volume_group=<%= node['openstack']['compute']['libvirt']['volume_group'] %>
sparse_logical_volumes=<%= node['openstack']['compute']['libvirt']['sparse_logical_volumes'] %>
<% elsif node['openstack']['compute']['libvirt']['images_type'] == 'rbd' -%>
images_rbd_pool=<%= node['openstack']['compute']['libvirt']['rbd']['nova']['pool'] %>
images_rbd_ceph_conf=<%= node['openstack']['compute']['libvirt']['rbd']['ceph_conf'] %>
#
# Options defined in nova.virt.libvirt.volume
#
# The RADOS client name for accessing rbd volumes (string value)
# NOTE that if these two options are set here, it will override the rbd_user that cinder provides
# for nova in netdisk_properties:
# https://github.com/openstack/nova/blob/c15dff2e9978fe851c73e92ab7f9b46e27de81ba/nova/virt/libvirt/volume.py#L217-L229
rbd_user=<%= node['openstack']['compute']['libvirt']['rbd']['cinder']['user'] %>
# The libvirt UUID of the secret for the rbd images (string value)
rbd_secret_uuid=<%= node['openstack']['compute']['libvirt']['rbd']['cinder']['secret_uuid'] %>
<% end -%>
[keystone_authtoken]
auth_uri = <%= @auth_uri %>
identity_uri = <%= @identity_uri %>
auth_version = <%= node["openstack"]["compute"]["api"]["auth"]["version"] %>
admin_tenant_name = <%= node["openstack"]["compute"]["service_tenant_name"] %>
admin_user = <%= node["openstack"]["compute"]["service_user"] %>
admin_password = <%= @service_pass %>
signing_dir = <%= node["openstack"]["compute"]["api"]["auth"]["cache_dir"] %>
<% unless node['openstack']['compute']['api']['auth']['cafile'].nil? %>
cafile = <%= node['openstack']['compute']['api']['auth']['cafile'] %>
<% end %>
<% unless node['openstack']['compute']['api']['auth']['memcached_servers'].nil? %>
memcached_servers = <%= node['openstack']['compute']['api']['auth']['memcached_servers'] %>
<% end %>
<% unless node['openstack']['compute']['api']['auth']['memcache_security_strategy'].nil? %>
memcache_security_strategy = <%= node['openstack']['compute']['api']['auth']['memcache_security_strategy'] %>
<% end %>
<% unless node['openstack']['compute']['api']['auth']['memcache_secret_key'].nil? %>
memcache_secret_key = <%= node['openstack']['compute']['api']['auth']['memcache_secret_key'] %>
<% end %>
hash_algorithms = <%= node['openstack']['compute']['api']['auth']['hash_algorithms'] %>
insecure = <%= node['openstack']['compute']['api']['auth']['insecure'] %>
<% if node['openstack']['compute']['network']['service_type'] == 'neutron' %>
[neutron]
# N.B. due to https://bugs.launchpad.net/nova/+bug/1206330
# we override the endpoint scheme below, ignore the port
# and essentially force http
<% if @network_endpoint.port == 443 -%>
url=http://<%= @network_endpoint.host %>:80
<% else -%>
url=<%= @network_endpoint.scheme %>://<%= @network_endpoint.host %>:<%= @network_endpoint.port %>
<% end -%>
insecure=<%= node['openstack']['compute']['network']['neutron']['insecure'] %>
auth_strategy=<%= node["openstack"]["compute"]["network"]["neutron"]["auth_strategy"] %>
admin_tenant_name=<%= node["openstack"]["compute"]["network"]["neutron"]["admin_tenant_name"] %>
admin_username=<%= node["openstack"]["compute"]["network"]["neutron"]["admin_username"] %>
admin_password=<%= @neutron_admin_password %>
admin_auth_url=<%= @identity_endpoint.to_s %>
timeout=<%= node["openstack"]["compute"]["network"]["neutron"]["timeout"] %>
region_name=<%= node["openstack"]["compute"]["network"]["neutron"]["region_name"] %>
ovs_bridge=<%= node["openstack"]["compute"]["network"]["neutron"]["ovs_bridge"] %>
extension_sync_interval=<%= node["openstack"]["compute"]["network"]["neutron"]["extension_sync_interval"] %>
cafile=<%= node["openstack"]["compute"]["network"]["neutron"]["cafile"] %>
service_metadata_proxy=<%= node["openstack"]["compute"]["network"]["neutron"]["service_neutron_metadata_proxy"] %>
metadata_proxy_shared_secret=<%= @neutron_metadata_proxy_shared_secret %>
<% end %>
[glance]
api_servers=<%= @glance_api_scheme %>://<%= @glance_api_ipaddress %>:<%= @glance_api_port %>
insecure=<%= node['openstack']['compute']['image']['glance_insecure'] %>
allowed_direct_url_schemes=<%= node['openstack']['compute']['image']['allowed_direct_url_schemes'].join(',') %>
[cinder]
# Location of ca certificates file to use for cinder client requests
cafile=<%= node['openstack']['compute']['block-storage']['cinder_cafile'] %>
# Allow to perform insecure SSL requests to cinder
insecure=<%= node['openstack']['compute']['block-storage']['cinder_insecure'] %>
# Info to match when looking for cinder in the service catalog
catalog_info=<%= node['openstack']['compute']['block-storage']['cinder_catalog_info'] %>
# Region name of this node (string value)
os_region_name=<%= node['openstack']['region'] %>
[ironic]
#
# Options defined in nova.virt.ironic.driver
#
# URL for Ironic API endpoint. (string value)
api_endpoint=<%= @ironic_endpoint.scheme %>://<%= @ironic_endpoint.host %>:<%= @ironic_endpoint.port %>
# Ironic keystone admin name (string value)
admin_username=<%= node['openstack']['compute']['bare-metal']['admin_username'] %>
# Ironic keystone admin password. (string value)
admin_password=<%= @ironic_admin_password %>
# Keystone public API endpoint. (string value)
admin_url=<%= @identity_endpoint.to_s %>
# Log level override for ironicclient. Set this in order to
# override the global "default_log_levels", "verbose", and
# "debug" settings. (string value)
#client_log_level=<None>
# Ironic keystone tenant name. (string value)
admin_tenant_name=<%= node['openstack']['compute']['bare-metal']['admin_tenant_name'] %>
[keymgr]
#
#Options defined in nova.keymgr
#
#The full class name of the key manager API class (string value)
api_class=<%= node["openstack"]["compute"]["keymgr"]["api_class"] %>
#
# Options defined in nova.keymgr.conf_key_mgr
#
# Fixed key returned by key manager, specified in hex (string value)
<% if node["openstack"]["compute"]["keymgr"]["fixed_key"] -%>
fixed_key=<%= node["openstack"]["compute"]["keymgr"]["fixed_key"] %>
<% end -%>
[oslo_concurrency]
lock_path=<%= node["openstack"]["compute"]["lock_path"] %>
<% if @mq_service_type == "qpid" %>
[oslo_messaging_qpid]
#
# From oslo.messaging
#
# Use durable queues in AMQP. (boolean value)
# Deprecated group/name - [DEFAULT]/rabbit_durable_queues
amqp_durable_queues=<%= node['openstack']['mq']['compute']['durable_queues'] %>
# Auto-delete queues in AMQP. (boolean value)
amqp_auto_delete=<%= node['openstack']['mq']['compute']['auto_delete'] %>
##### QPID #####
qpid_hostname=<%= node["openstack"]["mq"]["compute"]["qpid"]["host"] %>
qpid_port=<%= node["openstack"]["mq"]["compute"]["qpid"]["port"] %>
qpid_password=<%= @mq_password %>
qpid_username=<%= node["openstack"]["mq"]["compute"]["qpid"]["username"] %>
qpid_sasl_mechanisms=<%= node["openstack"]["mq"]["compute"]["qpid"]["sasl_mechanisms"] %>
qpid_reconnect_timeout=<%= node["openstack"]["mq"]["compute"]["qpid"]["reconnect_timeout"] %>
qpid_reconnect_limit=<%= node["openstack"]["mq"]["compute"]["qpid"]["reconnect_limit"] %>
qpid_reconnect_interval_min=<%= node["openstack"]["mq"]["compute"]["qpid"]["reconnect_interval_min"] %>
qpid_reconnect_interval_max=<%= node["openstack"]["mq"]["compute"]["qpid"]["reconnect_interval_max"] %>
qpid_reconnect_interval=<%= node["openstack"]["mq"]["compute"]["qpid"]["reconnect_interval"] %>
qpid_heartbeat=<%= node["openstack"]["mq"]["compute"]["qpid"]["heartbeat"] %>
# qpid protocol. default 'tcp'. set to 'ssl' to enable SSL
qpid_protocol=<%= node["openstack"]["mq"]["compute"]["qpid"]["protocol"] %>
qpid_tcp_nodelay=<%= node["openstack"]["mq"]["compute"]["qpid"]["tcp_nodelay"] %>
qpid_topology_version=<%= node['openstack']['mq']['compute']['qpid']['topology_version'] %>
<% end %>
<% if @mq_service_type == "rabbitmq" %>
[oslo_messaging_rabbit]
#
# From oslo.messaging
#
# Number of seconds after which the Rabbit broker is considered down if heartbeat's keep-alive fails (0 disable the heartbeat)
heartbeat_timeout_threshold=<%= node['openstack']['mq']['compute']['rabbit']['heartbeat_timeout_threshold'] %>
# How often times during the heartbeat_timeout_threshold we check the heartbeat
heartbeat_rate=<%= node['openstack']['mq']['compute']['rabbit']['heartbeat_rate'] %>
# Use durable queues in AMQP. (boolean value)
# Deprecated group/name - [DEFAULT]/rabbit_durable_queues
amqp_durable_queues=<%= node['openstack']['mq']['compute']['durable_queues'] %>
# Auto-delete queues in AMQP. (boolean value)
amqp_auto_delete=<%= node['openstack']['mq']['compute']['auto_delete'] %>
<% if node['openstack']['mq']['compute']['rabbit']['use_ssl'] -%>
# Connect over SSL for RabbitMQ. (boolean value)
rabbit_use_ssl=true
<% if node['openstack']['mq']['compute']['rabbit']['kombu_ssl_version'] -%>
# SSL version to use (valid only if SSL enabled). valid values
# are TLSv1 and SSLv23. SSLv2 and SSLv3 may be available on
# some distributions. (string value)
kombu_ssl_version=<%= node['openstack']['mq']['compute']['rabbit']['kombu_ssl_version'] %>
<% end -%>
<% if node['openstack']['mq']['compute']['rabbit']['kombu_ssl_keyfile'] -%>
# SSL key file (valid only if SSL enabled)
kombu_ssl_keyfile=<%= node['openstack']['mq']['compute']['rabbit']['kombu_ssl_keyfile'] %>
<% end -%>
<% if node['openstack']['mq']['compute']['rabbit']['kombu_ssl_certfile'] -%>
# SSL cert file (valid only if SSL enabled)
kombu_ssl_certfile=<%= node['openstack']['mq']['compute']['rabbit']['kombu_ssl_certfile'] %>
<% end -%>
<% if node['openstack']['mq']['compute']['rabbit']['kombu_ssl_ca_certs'] -%>
# SSL certification authority file (valid only if SSL enabled)
kombu_ssl_ca_certs=<%= node['openstack']['mq']['compute']['rabbit']['kombu_ssl_ca_certs'] %>
<% end -%>
# How long to wait before reconnecting in response to an AMQP consumer cancel notification
kombu_reconnect_delay=<%= node['openstack']['mq']['compute']['rabbit']['kombu_reconnect_delay'] %>
# How long to wait before considering a reconnect attempt to have failed.
# This value should not be longer than rpc_response_timeout
kombu_reconnect_timeout=<%= node['openstack']['mq']['compute']['rabbit']['kombu_reconnect_timeout'] %>
<% end -%>
##### RABBITMQ #####
rabbit_userid=<%= node["openstack"]["mq"]["compute"]["rabbit"]["userid"] %>
rabbit_password=<%= @mq_password %>
rabbit_virtual_host=<%= node["openstack"]["mq"]["compute"]["rabbit"]["vhost"] %>
# Maximum retries with trying to connect to RabbitMQ
# (the default of 0 implies an infinite retry count)
rabbit_max_retries=<%= node["openstack"]["mq"]["compute"]["rabbit"]["rabbit_max_retries"] %>
# RabbitMQ connection retry interval
rabbit_retry_interval=<%= node["openstack"]["mq"]["compute"]["rabbit"]["rabbit_retry_interval"] %>
<% if node["openstack"]["mq"]["compute"]["rabbit"]["ha"] -%>
rabbit_hosts=<%= @rabbit_hosts %>
rabbit_ha_queues=True
<% else -%>
rabbit_host=<%= node["openstack"]["mq"]["compute"]["rabbit"]["host"] %>
rabbit_port=<%= node["openstack"]["mq"]["compute"]["rabbit"]["port"] %>
<% end -%>
<% end -%>
<% if node['openstack']['compute']['upgrade_levels'] -%>
# Lock the version of RPC messages and allow live upgrading of the services
# without interruption caused by version mismatch.
# Add upgrade_levels for order rpc API, ex. compute = juno
[upgrade_levels]
<% node['openstack']['compute']['upgrade_levels'].each do |key, val| %>
<%= key %> = <%= val %>
<% end -%>
<% end -%>
# Image file url support, add new sections here
<% if node['openstack']['compute']['image']['filesystems'] -%>
[image_file_url]
filesystems=<%= node['openstack']['compute']['image']['filesystems'].keys.join(',') %>
<% node['openstack']['compute']['image']['filesystems'].each do |section, opts| %>
[image_file_url:<%= section %>]
<% opts.each do |key, value| %>
<%= key %>=<%= value %>
<% end %>
<% end %>
<% end %>
[serial_console]
#
# Serial console configuration
#
# Enable serial console related features
enabled=<%= node['openstack']['compute']['serial_console']['enable'] %>
# Location of serial console proxy
base_url=<%= @serial_console_base_url %>
# Range of TCP ports to use for serial ports on compute hosts
port_range=<%= node['openstack']['compute']['serial_console']['port_range'] %>
# The address to which proxy clients (like nova-serialproxy) should connect
proxyclient_address=<%= @serial_console_proxyclient_address %>