Atom feed of this document
 

 Example nova.conf Configuration Files

The following sections describe many of the configuration option settings that can go into the nova.conf files. Copies of each nova.conf file need to be copied to each compute node. Here are some sample nova.conf files that offer examples of specific configurations.

 Essex configuration using KVM, FlatDHCP, MySQL, Glance, LDAP, and optionally sheepdog, API is EC2

From gerrit.wikimedia.org, used with permission. Where you see parameters passed in, they are reading from Puppet configuration files. For example, a variable like <%= novaconfig["my_ip"] %> is for the puppet templates they use to deploy.

[DEFAULT]

verbose=True
auth_strategy=keystone
connection_type=libvirt
root_helper=sudo /usr/bin/nova-rootwrap
instance_name_template=i-%08x
daemonize=1
scheduler_driver=nova.scheduler.simple.SimpleScheduler
max_cores=200
my_ip=<%= novaconfig["my_ip"] %>
logdir=/var/log/nova
state_path=/var/lib/nova
lock_path=/var/lock/nova
sql_connection=mysql://<%= novaconfig["db_user"] %>:<%= novaconfig["db_pass"] %>@<%= novaconfig["db_host"] %>/<%= novaconfig["db_name"] %>
image_service=nova.image.glance.GlanceImageService
s3_host=<%= novaconfig["glance_host"] %>
glance_api_servers=<%= novaconfig["glance_host"] %>:9292
rabbit_host=<%= novaconfig["rabbit_host"] %>
cc_host=<%= novaconfig["cc_host"] %>
network_host=<%= novaconfig["network_host"] %>
ec2_url=http://<%= novaconfig["api_host"] %>:8773/services/Cloud
ec2_dmz_host=<%= novaconfig["api_ip"] %>
dmz_cidr=<%= novaconfig["dmz_cidr"] %>
libvirt_type=<%= novaconfig["libvirt_type"] %>
dhcpbridge_flagfile=/etc/nova/nova.conf
dhcpbridge=/usr/bin/nova-dhcpbridge
flat_network_dhcp_start=<%= novaconfig["dhcp_start"] %>
dhcp_domain=<%= novaconfig["dhcp_domain"] %>
network_manager=nova.network.manager.FlatDHCPManager
flat_interface=<%= novaconfig["network_flat_interface"] %>
flat_injected=False
flat_network_bridge=<%= novaconfig["flat_network_bridge"] %>
fixed_range=<%= novaconfig["fixed_range"] %>
public_interface=<%= novaconfig["network_public_interface"] %>
routing_source_ip=<%= novaconfig["network_public_ip"] %>
node_availability_zone=<%= novaconfig["zone"] %>
zone_name=<%= novaconfig["zone"] %>
quota_floating_ips=<%= novaconfig["quota_floating_ips"] %>
multi_host=True
api_paste_config=/etc/nova/api-paste.ini
#use_ipv6=True
allow_same_net_traffic=False
live_migration_uri=<%= novaconfig["live_migration_uri"] %>
      

These represent configuration role classes used by the puppet configuration files to build out the rest of the nova.conf file.

ldap_base_dn => "dc=wikimedia,dc=org",
ldap_user_dn => "uid=novaadmin,ou=people,dc=wikimedia,dc=org",
ldap_user_pass => $passwords::openstack::nova::nova_ldap_user_pass,
ldap_proxyagent => "cn=proxyagent,ou=profile,dc=wikimedia,dc=org",
ldap_proxyagent_pass => $passwords::openstack::nova::nova_ldap_proxyagent_pass,
controller_mysql_root_pass => $passwords::openstack::nova::controller_mysql_root_pass,
puppet_db_name => "puppet",
puppet_db_user => "puppet",
puppet_db_pass => $passwords::openstack::nova::nova_puppet_user_pass,
# By default, don't allow projects to allocate public IPs; this way we can
# let users have network admin rights, for firewall rules and such, and can
# give them public ips by increasing their quota
quota_floating_ips => "0",
libvirt_type => $realm ? {
			"production" => "kvm",
			"labs" => "qemu",
db_host => $controller_hostname,
		dhcp_domain => "pmtpa.wmflabs",
		glance_host => $controller_hostname,
		rabbit_host => $controller_hostname,
		cc_host => $controller_hostname,
		network_flat_interface => $realm ? {
			"production" => "eth1.103",
			"labs" => "eth0.103",
		},
		network_flat_interface_name => $realm ? {
			"production" => "eth1",
			"labs" => "eth0",
		},
		network_flat_interface_vlan => "103",
		flat_network_bridge => "br103",
		network_public_interface => "eth0",
		network_host => $realm ? {
			"production" => "10.4.0.1",
			"labs" => "127.0.0.1",
		},
		api_host => $realm ? {
			"production" => "virt2.pmtpa.wmnet",
			"labs" => "localhost",
		},
		api_ip => $realm ? {
			"production" => "10.4.0.1",
			"labs" => "127.0.0.1",
		},
		fixed_range => $realm ? {
			"production" => "10.4.0.0/24",
			"labs" => "192.168.0.0/24",
		},
		dhcp_start => $realm ? {
			"production" => "10.4.0.4",
			"labs" => "192.168.0.4",
		},
		network_public_ip => $realm ? {
			"production" => "208.80.153.192",
			"labs" => "127.0.0.1",
		},
		dmz_cidr => $realm ? {
			"production" => "208.80.153.0/22,10.0.0.0/8",
			"labs" => "10.4.0.0/24",
		},
		controller_hostname => $realm ? {
			"production" => "labsconsole.wikimedia.org",
			"labs" => $fqdn,
		},
		ajax_proxy_url => $realm ? {
			"production" => "http://labsconsole.wikimedia.org:8000",
			"labs" => "http://${hostname}.${domain}:8000",
		},
		ldap_host => $controller_hostname,
		puppet_host => $controller_hostname,
		puppet_db_host => $controller_hostname,
		live_migration_uri => "qemu://%s.pmtpa.wmnet/system?pkipath=/var/lib/nova",
		zone => "pmtpa",
		keystone_admin_token => $keystoneconfig["admin_token"],
		keystone_auth_host => $keystoneconfig["bind_ip"],
		keystone_auth_protocol => $keystoneconfig["auth_protocol"],
		keystone_auth_port => $keystoneconfig["auth_port"],
            
 

Figure 4.1. KVM, FlatDHCP, MySQL, Glance, LDAP, and optionally sheepdog


 KVM, Flat, MySQL, and Glance, OpenStack or EC2 API

This example nova.conf file is from an internal Rackspace test system used for demonstrations.

      [DEFAULT]

# LOGS/STATE
verbose=True
logdir=/var/log/nova
state_path=/var/lib/nova
lock_path=/var/lock/nova

# AUTHENTICATION
auth_strategy=keystone

# SCHEDULER
compute_scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler

# VOLUMES
volume_group=nova-volumes
volume_name_template=volume-%08x
iscsi_helper=tgtadm

# DATABASE
sql_connection=mysql://nova:yourpassword@192.168.206.130/nova

# COMPUTE
libvirt_type=qemu
connection_type=libvirt
instance_name_template=instance-%08x
api_paste_config=/etc/nova/api-paste.ini
allow_resize_to_same_host=True

# APIS
osapi_compute_extension=nova.api.openstack.compute.contrib.standard_extensions
ec2_dmz_host=192.168.206.130
s3_host=192.168.206.130

# RABBITMQ
rabbit_host=192.168.206.130

# GLANCE
image_service=nova.image.glance.GlanceImageService
glance_api_servers=192.168.206.130:9292

# NETWORK
network_manager=nova.network.manager.FlatDHCPManager
force_dhcp_release=True
dhcpbridge_flagfile=/etc/nova/nova.conf
firewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDriver
# Change my_ip to match each host
my_ip=192.168.206.130
public_interface=br100
vlan_interface=eth0
flat_network_bridge=br100
flat_interface=eth0
fixed_range=10.0.0.0/24

# NOVNC CONSOLE
novncproxy_base_url=http://192.168.206.130:6080/vnc_auto.html
# Change vncserver_proxyclient_address and vncserver_listen to match each compute host
vncserver_proxyclient_address=192.168.206.130
vncserver_listen=192.168.206.130

 

Figure 4.2. KVM, Flat, MySQL, and Glance, OpenStack or EC2 API


 XenServer, Flat networking, MySQL, and Glance, OpenStack API

This example nova.conf file is from an internal Rackspace test system.

verbose
nodaemon
sql_connection=mysql://root:<password>@127.0.0.1/nova
network_manager=nova.network.manager.FlatManager
image_service=nova.image.glance.GlanceImageService
flat_network_bridge=xenbr0
connection_type=xenapi
xenapi_connection_url=https://<XenServer IP>
xenapi_connection_username=root
xenapi_connection_password=supersecret
rescue_timeout=86400
allow_admin_api=true
xenapi_inject_image=false
use_ipv6=true

# To enable flat_injected, currently only works on Debian-based systems
flat_injected=true
ipv6_backend=account_identifier
ca_path=./nova/CA

# Add the following to your conf file if you're running on Ubuntu Maverick
xenapi_remap_vbd_dev=true
            
 

Figure 4.3. KVM, Flat, MySQL, and Glance, OpenStack or EC2 API




loading table of contents...