
This commit refactors the db connection params in openstack::compute from a single parameter that represents the connection string to individual parameters for each db_name, db_user, db_password, and db_host. This patch is intended for two purposes. 1. now that the compute requires two seperate db connections (cinder and nova), by breaking them down to these parameters, they can share their db_host parameter. 2. it simplifies the anount of information users have to specify to a password. In most cases, the defaults will be sufficient for all other data. Change-Id: I01a5a987a6a5b390b0a132b4f9b3261aae9c1f13
258 lines
8.0 KiB
Puppet
258 lines
8.0 KiB
Puppet
#
|
|
# == Class: openstack::compute
|
|
#
|
|
# Manifest to install/configure nova-compute
|
|
#
|
|
# [purge_nova_config]
|
|
# Whether unmanaged nova.conf entries should be purged.
|
|
# (optional) Defaults to false.
|
|
#
|
|
# === Examples
|
|
#
|
|
# class { 'openstack::nova::compute':
|
|
# internal_address => '192.168.2.2',
|
|
# vncproxy_host => '192.168.1.1',
|
|
# nova_user_password => 'changeme',
|
|
# }
|
|
|
|
class openstack::compute (
|
|
# Required Network
|
|
$internal_address,
|
|
# Required Nova
|
|
$nova_user_password,
|
|
# Required Rabbit
|
|
$rabbit_password,
|
|
# DB
|
|
$nova_db_password,
|
|
$db_host = '127.0.0.1',
|
|
# Nova Database
|
|
$nova_db_user = 'nova',
|
|
$nova_db_name = 'nova',
|
|
# Network
|
|
$public_interface = undef,
|
|
$private_interface = undef,
|
|
$fixed_range = undef,
|
|
$network_manager = 'nova.network.manager.FlatDHCPManager',
|
|
$network_config = {},
|
|
$multi_host = false,
|
|
$enabled_apis = 'ec2,osapi_compute,metadata',
|
|
# Quantum
|
|
$quantum = true,
|
|
$quantum_user_password = false,
|
|
$quantum_admin_tenant_name = 'services',
|
|
$quantum_admin_user = 'quantum',
|
|
$enable_ovs_agent = true,
|
|
$enable_l3_agent = false,
|
|
$enable_dhcp_agent = false,
|
|
$quantum_auth_url = "http://127.0.0.1:35357/v2.0",
|
|
$keystone_host = '127.0.0.1',
|
|
$quantum_host = '127.0.0.1',
|
|
$ovs_local_ip = false,
|
|
# Nova
|
|
$nova_admin_tenant_name = 'services',
|
|
$nova_admin_user = 'nova',
|
|
$purge_nova_config = false,
|
|
$libvirt_vif_driver = 'nova.virt.libvirt.vif.LibvirtGenericVIFDriver',
|
|
# Rabbit
|
|
$rabbit_host = '127.0.0.1',
|
|
$rabbit_user = 'openstack',
|
|
$rabbit_virtual_host = '/',
|
|
# Glance
|
|
$glance_api_servers = false,
|
|
# Virtualization
|
|
$libvirt_type = 'kvm',
|
|
# VNC
|
|
$vnc_enabled = true,
|
|
$vncproxy_host = undef,
|
|
$vncserver_listen = false,
|
|
# cinder / volumes
|
|
$manage_volumes = true,
|
|
$cinder_db_password = false,
|
|
$cinder_db_user = 'cinder',
|
|
$cinder_db_name = 'cinder',
|
|
$volume_group = 'cinder-volumes',
|
|
$iscsi_ip_address = '127.0.0.1',
|
|
$setup_test_volume = false,
|
|
# General
|
|
$migration_support = false,
|
|
$verbose = false,
|
|
$enabled = true
|
|
) {
|
|
|
|
if $ovs_local_ip {
|
|
$ovs_local_ip_real = $ovs_local_ip
|
|
} else {
|
|
$ovs_local_ip_real = $internal_address
|
|
}
|
|
|
|
if $vncserver_listen {
|
|
$vncserver_listen_real = $vncserver_listen
|
|
} else {
|
|
$vncserver_listen_real = $internal_address
|
|
}
|
|
|
|
|
|
#
|
|
# indicates that all nova config entries that we did
|
|
# not specifify in Puppet should be purged from file
|
|
#
|
|
if ! defined( Resources[nova_config] ) {
|
|
if ($purge_nova_config) {
|
|
resources { 'nova_config':
|
|
purge => true,
|
|
}
|
|
}
|
|
}
|
|
|
|
$nova_sql_connection = "mysql://${nova_db_user}:${nova_db_password}@${db_host}/${nova_db_name}"
|
|
|
|
class { 'nova':
|
|
sql_connection => $nova_sql_connection,
|
|
rabbit_userid => $rabbit_user,
|
|
rabbit_password => $rabbit_password,
|
|
image_service => 'nova.image.glance.GlanceImageService',
|
|
glance_api_servers => $glance_api_servers,
|
|
verbose => $verbose,
|
|
rabbit_host => $rabbit_host,
|
|
rabbit_virtual_host => $rabbit_virtual_host,
|
|
}
|
|
|
|
# Install / configure nova-compute
|
|
class { '::nova::compute':
|
|
enabled => $enabled,
|
|
vnc_enabled => $vnc_enabled,
|
|
vncserver_proxyclient_address => $internal_address,
|
|
vncproxy_host => $vncproxy_host,
|
|
}
|
|
|
|
# Configure libvirt for nova-compute
|
|
class { 'nova::compute::libvirt':
|
|
libvirt_type => $libvirt_type,
|
|
vncserver_listen => $vncserver_listen_real,
|
|
migration_support => $migration_support,
|
|
}
|
|
|
|
# if the compute node should be configured as a multi-host
|
|
# compute installation
|
|
if ! $quantum {
|
|
|
|
if ! $fixed_range {
|
|
fail("Must specify the fixed range when using nova-networks")
|
|
}
|
|
|
|
if $multi_host {
|
|
include keystone::python
|
|
nova_config {
|
|
'DEFAULT/multi_host': value => 'True';
|
|
'DEFAULT/send_arp_for_ha': value => 'True';
|
|
}
|
|
if ! $public_interface {
|
|
fail('public_interface must be defined for multi host compute nodes')
|
|
}
|
|
$enable_network_service = true
|
|
class { 'nova::api':
|
|
enabled => true,
|
|
admin_tenant_name => $nova_admin_tenant_name,
|
|
admin_user => $nova_admin_user,
|
|
admin_password => $nova_user_password,
|
|
enabled_apis => $enabled_apis,
|
|
}
|
|
} else {
|
|
$enable_network_service = false
|
|
nova_config {
|
|
'DEFAULT/multi_host': value => 'False';
|
|
'DEFAULT/send_arp_for_ha': value => 'False';
|
|
}
|
|
}
|
|
|
|
class { 'nova::network':
|
|
private_interface => $private_interface,
|
|
public_interface => $public_interface,
|
|
fixed_range => $fixed_range,
|
|
floating_range => false,
|
|
network_manager => $network_manager,
|
|
config_overrides => $network_config,
|
|
create_networks => false,
|
|
enabled => $enable_network_service,
|
|
install_service => $enable_network_service,
|
|
}
|
|
} else {
|
|
|
|
if ! $quantum_user_password {
|
|
fail('quantum user password must be set when quantum is configured')
|
|
}
|
|
if ! $keystone_host {
|
|
fail('keystone host must be configured when quantum is installed')
|
|
}
|
|
|
|
class { 'openstack::quantum':
|
|
# Database
|
|
db_host => $db_host,
|
|
# Networking
|
|
ovs_local_ip => $ovs_local_ip_real,
|
|
# Rabbit
|
|
rabbit_host => $rabbit_host,
|
|
rabbit_user => $rabbit_user,
|
|
rabbit_password => $rabbit_password,
|
|
# Quantum OVS
|
|
enable_ovs_agent => $enable_ovs_agent,
|
|
firewall_driver => false,
|
|
# Quantum L3 Agent
|
|
enable_l3_agent => $enable_l3_agent,
|
|
enable_dhcp_agent => $enable_dhcp_agent,
|
|
auth_url => $quantum_auth_url,
|
|
user_password => $quantum_user_password,
|
|
# Keystone
|
|
keystone_host => $keystone_host,
|
|
# General
|
|
enabled => $enabled,
|
|
enable_server => false,
|
|
verbose => $verbose,
|
|
}
|
|
|
|
class { 'nova::compute::quantum':
|
|
libvirt_vif_driver => $libvirt_vif_driver,
|
|
}
|
|
|
|
# Configures nova.conf entries applicable to Quantum.
|
|
class { 'nova::network::quantum':
|
|
quantum_admin_password => $quantum_user_password,
|
|
quantum_auth_strategy => 'keystone',
|
|
quantum_url => "http://${quantum_host}:9696",
|
|
quantum_admin_username => $quantum_admin_user,
|
|
quantum_admin_tenant_name => $quantum_admin_tenant_name,
|
|
quantum_admin_auth_url => "http://${keystone_host}:35357/v2.0",
|
|
}
|
|
|
|
}
|
|
|
|
if $manage_volumes {
|
|
|
|
if ! $cinder_db_password {
|
|
fail('cinder_db_password must be set when cinder is being configured')
|
|
}
|
|
|
|
$cinder_sql_connection = "mysql://${cinder_db_user}:${cinder_db_password}@${db_host}/${cinder_db_name}"
|
|
|
|
class { 'openstack::cinder::storage':
|
|
sql_connection => $cinder_sql_connection,
|
|
rabbit_password => $rabbit_password,
|
|
rabbit_userid => $rabbit_user,
|
|
rabbit_host => $rabbit_host,
|
|
rabbit_virtual_host => $rabbit_virtual_host,
|
|
volume_group => $volume_group,
|
|
iscsi_ip_address => $iscsi_ip_address,
|
|
enabled => $enabled,
|
|
verbose => $verbose,
|
|
setup_test_volume => $setup_test_volume,
|
|
volume_driver => 'iscsi',
|
|
}
|
|
|
|
# set in nova::api
|
|
if ! defined(Nova_config['DEFAULT/volume_api_class']) {
|
|
nova_config { 'DEFAULT/volume_api_class': value => 'nova.volume.cinder.API' }
|
|
}
|
|
}
|
|
|
|
}
|