
Previously, OpenStack services logged frequent database-has-gone-away errors. This patch adds a parameter that can configure the sql_idle_timeout which can be decreased to reduce these errors. More information on this issue can be found here: https://bugs.launchpad.net/nova/+bug/1007027 for more details. Change-Id: I6e9388b36207be87f7e706be18b4cd4060956a55
256 lines
6.8 KiB
Puppet
256 lines
6.8 KiB
Puppet
#
|
|
# == Class: openstack::quantum
|
|
#
|
|
# Class to define quantum components for openstack. This class can
|
|
# be configured to provide all quantum related functionality.
|
|
#
|
|
# === Parameters
|
|
#
|
|
# [user_password]
|
|
# Password used for authentication.
|
|
# (required)
|
|
#
|
|
# [rabbit_password]
|
|
# Password used to connect to rabbitmq
|
|
# (required)
|
|
#
|
|
# [enabled]
|
|
# state of the quantum services.
|
|
# (optional) Defaults to true.
|
|
#
|
|
# [enable_server]
|
|
# If the server should be installed.
|
|
# (optional) Defaults to true.
|
|
#
|
|
# [enable_dhcp_agent]
|
|
# Whether the dhcp agent should be enabled.
|
|
# (optional) Defaults to false.
|
|
#
|
|
# [enable_l3_agent]
|
|
# Whether the l3 agent should be enabled.
|
|
# (optional) Defaults to false.
|
|
#
|
|
# [enable_metadata_agent]
|
|
# Whether the metadata agent should be enabled.
|
|
# (optional) Defaults to false.
|
|
#
|
|
# [enable_ovs_agent]
|
|
# Whether the ovs agent should be enabled.
|
|
# (optional) Defaults to false.
|
|
#
|
|
# [bridge_uplinks]
|
|
# OVS external bridge name and physical bridge interface tuple.
|
|
# (optional) Defaults to [].
|
|
#
|
|
# [bridge_mappings]
|
|
# Physical network name and OVS external bridge name tuple. Only needed for flat and VLAN networking.
|
|
# (optional) Defaults to [].
|
|
#
|
|
# [auth_url]
|
|
# Url used to contact the authentication service.
|
|
# (optional) Defaults to 'http://localhost:35357/v2.0'.
|
|
#
|
|
# [shared_secret]
|
|
# Shared secret used for the metadata service.
|
|
# (optional) Defaults to false indicating the metadata service is not configured.
|
|
#
|
|
# [metadata_ip]
|
|
# Ip address of metadata service.
|
|
# (optional) Defaults to '127.0.0.1'.
|
|
#
|
|
# [db_password]
|
|
# Password used to connect to quantum database.
|
|
# (required)
|
|
#
|
|
# [db_type]
|
|
# Type of database to use. Only accepts mysql at the moment.
|
|
# (optional)
|
|
#
|
|
# [ovs_local_ip]
|
|
# Ip address to use for tunnel endpoint.
|
|
# Only required when ovs is enabled. No default.
|
|
#
|
|
# [ovs_enable_tunneling]
|
|
# Whether ovs tunnels should be enabled.
|
|
# (optional) Defaults to true.
|
|
#
|
|
# [firewall_driver]
|
|
# Firewall driver to use.
|
|
# (optional) Defaults to undef.
|
|
#
|
|
# [rabbit_user]
|
|
# Name of rabbit user.
|
|
# (optional) defaults to rabbit_user.
|
|
#
|
|
# [rabbit_host]
|
|
# Host where rabbitmq is running.
|
|
# (optional) 127.0.0.1
|
|
#
|
|
# [rabbit_hosts]
|
|
# Enable/disable Qauntum to use rabbitmq mirrored queues.
|
|
# Specifies an array of clustered rabbitmq brokers.
|
|
# (optional) false
|
|
#
|
|
# [rabbit_virtual_host]
|
|
# Virtual host to use for rabbitmq.
|
|
# (optional) Defaults to '/'.
|
|
#
|
|
# [db_host]
|
|
# Host where db is running.
|
|
# (optional) Defaults to 127.0.0.1.
|
|
#
|
|
# [db_name]
|
|
# Name of quantum database.
|
|
# (optional) Defaults to quantum.
|
|
#
|
|
# [db_user]
|
|
# User to connect to quantum database as.
|
|
# (optional) Defaults to quantum.
|
|
#
|
|
# [bind_address]
|
|
# Address quantum api server should bind to.
|
|
# (optional) Defaults to 0.0.0.0.
|
|
#
|
|
# [sql_idle_timeout]
|
|
# Timeout for sql to reap connections.
|
|
# (optional) Defaults to '3600'.
|
|
#
|
|
# [keystone_host]
|
|
# Host running keystone.
|
|
# (optional) Defaults to 127.0.0.1.
|
|
#
|
|
# [verbose]
|
|
# Enables verbose for quantum services.
|
|
# (optional) Defaults to false.
|
|
#
|
|
# [debug]
|
|
# Enables debug for quantum services.
|
|
# (optional) Defaults to false.
|
|
#
|
|
# === Examples
|
|
#
|
|
# class { 'openstack::quantum':
|
|
# db_password => 'quantum_db_pass',
|
|
# user_password => 'keystone_user_pass',
|
|
# rabbit_password => 'quantum_rabbit_pass',
|
|
# bridge_uplinks => '[br-ex:eth0]',
|
|
# bridge_mappings => '[default:br-ex],
|
|
# enable_ovs_agent => true,
|
|
# ovs_local_ip => '10.10.10.10',
|
|
# }
|
|
#
|
|
|
|
class openstack::quantum (
|
|
# Passwords
|
|
$user_password,
|
|
$rabbit_password,
|
|
# enable or disable quantum
|
|
$enabled = true,
|
|
$enable_server = true,
|
|
# Set DHCP/L3 Agents on Primary Controller
|
|
$enable_dhcp_agent = false,
|
|
$enable_l3_agent = false,
|
|
$enable_metadata_agent = false,
|
|
$enable_ovs_agent = false,
|
|
# OVS settings
|
|
$ovs_local_ip = false,
|
|
$ovs_enable_tunneling = true,
|
|
$bridge_uplinks = [],
|
|
$bridge_mappings = [],
|
|
# rely on the default set in ovs
|
|
$firewall_driver = undef,
|
|
# networking and Interface Information
|
|
# Metadata configuration
|
|
$shared_secret = false,
|
|
$metadata_ip = '127.0.0.1',
|
|
# Quantum Authentication Information
|
|
$auth_url = 'http://localhost:35357/v2.0',
|
|
# Rabbit Information
|
|
$rabbit_user = 'rabbit_user',
|
|
$rabbit_host = '127.0.0.1',
|
|
$rabbit_hosts = false,
|
|
$rabbit_virtual_host = '/',
|
|
# Database. Currently mysql is the only option.
|
|
$db_type = 'mysql',
|
|
$db_password = false,
|
|
$db_host = '127.0.0.1',
|
|
$db_name = 'quantum',
|
|
$db_user = 'quantum',
|
|
$sql_idle_timeout = '3600',
|
|
# General
|
|
$bind_address = '0.0.0.0',
|
|
$keystone_host = '127.0.0.1',
|
|
$verbose = false,
|
|
$debug = false,
|
|
) {
|
|
|
|
class { '::quantum':
|
|
enabled => $enabled,
|
|
bind_host => $bind_address,
|
|
rabbit_host => $rabbit_host,
|
|
rabbit_hosts => $rabbit_hosts,
|
|
rabbit_virtual_host => $rabbit_virtual_host,
|
|
rabbit_user => $rabbit_user,
|
|
rabbit_password => $rabbit_password,
|
|
verbose => $verbose,
|
|
debug => $debug,
|
|
}
|
|
|
|
if $enable_server {
|
|
if ! $db_password {
|
|
fail('db password must be set when configuring a quantum server')
|
|
}
|
|
if ($db_type == 'mysql') {
|
|
$sql_connection = "mysql://${db_user}:${db_password}@${db_host}/${db_name}?charset=utf8"
|
|
} else {
|
|
fail("Unsupported db type: ${db_type}. Only mysql is currently supported.")
|
|
}
|
|
class { 'quantum::server':
|
|
auth_host => $keystone_host,
|
|
auth_password => $user_password,
|
|
}
|
|
class { 'quantum::plugins::ovs':
|
|
sql_connection => $sql_connection,
|
|
sql_idle_timeout => $sql_idle_timeout,
|
|
tenant_network_type => 'gre',
|
|
}
|
|
}
|
|
|
|
if $enable_ovs_agent {
|
|
if ! $ovs_local_ip {
|
|
fail('ovs_local_ip parameter must be set when using ovs agent')
|
|
}
|
|
class { 'quantum::agents::ovs':
|
|
bridge_uplinks => $bridge_uplinks,
|
|
bridge_mappings => $bridge_mappings,
|
|
enable_tunneling => $ovs_enable_tunneling,
|
|
local_ip => $ovs_local_ip,
|
|
firewall_driver => $firewall_driver,
|
|
}
|
|
}
|
|
|
|
if $enable_dhcp_agent {
|
|
class { 'quantum::agents::dhcp':
|
|
use_namespaces => true,
|
|
}
|
|
}
|
|
if $enable_l3_agent {
|
|
class { 'quantum::agents::l3':
|
|
use_namespaces => true,
|
|
}
|
|
}
|
|
|
|
if $enable_metadata_agent {
|
|
if ! $shared_secret {
|
|
fail('metadata_shared_secret parameter must be set when using metadata agent')
|
|
}
|
|
class { 'quantum::agents::metadata':
|
|
auth_password => $user_password,
|
|
shared_secret => $shared_secret,
|
|
auth_url => $auth_url,
|
|
metadata_ip => $metadata_ip,
|
|
}
|
|
}
|
|
|
|
}
|