Merge pull request #27 from gandelman-a/multi-node

Seperate compute node from cloud controller components.
This commit is contained in:
Dan Bode 2011-06-21 09:02:16 -07:00
commit e39683a5bb
9 changed files with 220 additions and 5 deletions

View File

@ -88,7 +88,7 @@ class nova::all(
owner => $admin_user,
}
nova::manage::network { "${project_name}-net-${network}":
nova::manage::network { "${project_name}-net-${nova_network}":
network => $nova_network,
available_ips => $available_ips,
require => Nova::Manage::Project[$project_name],

View File

@ -3,6 +3,7 @@ class nova::db(
$name = 'nova',
$user = 'nova',
$host = '127.0.0.1',
$allowed_hosts = undef,
$cluster_id = 'localzone'
) {
@ -31,4 +32,14 @@ class nova::db(
require => Class['mysql::server'],
notify => Exec["initial-db-sync"],
}
if $allowed_hosts {
nova::db::host_access { $allowed_hosts:
user => $user,
password => $password,
database => $name,
}
} else {
Nova::Db::Host_access<<| tag == $cluster_id |>>
}
}

View File

@ -0,0 +1,14 @@
# db/allowed_hosts.pp
define nova::db::host_access ($user, $password, $database) {
database_user { "${user}@${name}":
password_hash => mysql_password($password),
provider => 'mysql',
require => Database[$database],
}
database_grant { "${user}@${name}/${database}":
# TODO figure out which privileges to grant.
privileges => "all",
provider => 'mysql',
require => Database_user["${user}@${name}"]
}
}

View File

@ -1,6 +1,6 @@
#
# TODO - this is currently hardcoded to be a xenserver
class nova::canonical::all(
class nova::ubuntu::all(
$db_password,
$db_name = 'nova',
$db_user = 'nova',
@ -85,7 +85,7 @@ class nova::canonical::all(
owner => $admin_user,
}
nova::manage::network { "${project_name}-net-${network}":
nova::manage::network { "${project_name}-net-${nova_network}":
network => $nova_network,
available_ips => $available_ips,
require => Nova::Manage::Project[$project_name],

79
manifests/ubuntu/cc.pp Normal file
View File

@ -0,0 +1,79 @@
#
# TODO - this is currently hardcoded to be a xenserver
class nova::ubuntu::cc (
$db_password,
$db_name = 'nova',
$db_user = 'nova',
$db_host = 'localhost',
$db_allowed_hosts = undef,
$flat_network_bridge = 'br100',
$flat_network_bridge_ip = '11.0.0.1',
$flat_network_bridge_netmask = '255.255.255.0',
$image_service = 'nova.image.local.LocalImageService',
$glance_host,
$glance_port = '9292',
$nova_network = '11.0.0.0',
$available_ips = '256',
$admin_user = 'novaadmin',
$project_name = 'nova'
) {
# work around hostname bug, LP #653405
host { $hostname:
ip => $ipaddress,
host_aliases => $fqdn,
}
class { 'nova::rabbitmq':
port => $rabbitmq_port,
userid => $rabbitmq_userid,
password => $rabbitmq_password,
virtual_host => $rabbitmq_virtual_host,
require => Host[$hostname],
}
class { "nova":
logdir => $logdir,
verbose => $verbose,
sql_connection => "mysql://${db_user}:${db_password}@${db_host}/${db_name}",
image_service => $image_service,
glance_host => $glance_host,
glance_port => $glance_port,
}
class { "nova::api": enabled => true }
class { "nova::network::flat":
enabled => true,
flat_network_bridge => $flat_network_bridge,
flat_network_bridge_ip => $flat_network_bridge_ip,
flat_network_bridge_netmask => $flat_network_bridge_netmask,
}
class { "nova::objectstore": enabled => true }
class { "nova::scheduler": enabled => true }
class { 'nova::db':
# pass in db config as params
password => $db_password,
name => $db_name,
user => $db_user,
host => $db_host,
allowed_hosts => $db_allowed_hosts,
}
nova::manage::admin { $admin_user: }
nova::manage::project { $project_name:
owner => $admin_user,
}
nova::manage::network { "${project_name}-net-${nova_network}":
network => $nova_network,
available_ips => $available_ips,
require => Nova::Manage::Project[$project_name],
}
}

View File

@ -0,0 +1,51 @@
# compute.pp
class nova::ubuntu::compute (
$api_server,
$rabbit_host,
$db_host,
# default to local image service.
$image_service = undef,
$glance_host = undef,
$glance_port = '9292',
$flat_network_bridge,
$flat_network_bridge_ip,
$flat_network_bridge_netmask,
$rabbit_port = undef,
$rabbit_userid = undef,
$rabbit_virtual_host = undef,
$db_user = 'nova',
$db_password = 'nova',
$db_name = 'nova',
$enabled = 'false'
) {
class { "nova":
logdir => $logdir,
verbose => $verbose,
image_service => $image_service,
rabbit_host => $rabbit_host,
rabbit_port => $rabbit_port,
rabbit_userid => $rabbit_userid,
rabbit_virtual_host => $rabbit_virtual_host,
sql_connection => "mysql://${db_user}:${db_password}@${db_host}/${db_name}",
glance_host => $glance_host,
glance_port => $glance_port,
}
# TODO For now lets worry about FlatManager, then FlatDHCP, etc.
nova_config {
'network_manager': value => 'nova.network.manager.FlatManager';
'flat_network_bridge': value => $flat_network_bridge;
}
nova::network::bridge { $flat_network_bridge:
ip => $flat_network_bridge_ip,
netmask => $flat_network_bridge_netmask,
}
class { "nova::compute":
api_server => $api_server,
enabled => $enabled,
}
}

View File

@ -4,9 +4,9 @@ resources { 'nova_config':
}
class { 'mysql::server':
root_password => 'password'
root_password => 'password'
}
class { 'nova::canonical::all':
class { 'nova::ubuntu::all':
flat_network_bridge => 'br100',
flat_network_bridge_ip => '11.0.0.1',
flat_network_bridge_netmask => '255.255.255.0',

38
tests/ubuntu/cc.pp Normal file
View File

@ -0,0 +1,38 @@
# cc.pp
resources { 'nova_config':
purge => true,
}
class { 'mysql::server':
root_password => 'password'
}
class { 'nova::ubuntu::cc':
flat_network_bridge => 'br100',
flat_network_bridge_ip => '11.0.0.1',
flat_network_bridge_netmask => '255.255.255.0',
nova_network => '11.0.0.0',
available_ips => '256',
image_service => 'nova.image.glance.GlanceImageService',
glance_host => $ipaddress,
db_password => 'password',
db_allowed_hosts => ['somehost', '10.0.0.2', '10.0.0.3', '10.0.0.5'],
admin_user => 'admin',
project_name => 'novaproject',
}
class { "glance::api":
verbose => 'true',
api_debug => 'true',
}
class { "glance::registry":
verbose => 'true',
debug => 'true',
sql_connection => "mysql://nova:password@localhost/nova",
}

22
tests/ubuntu/compute.pp Normal file
View File

@ -0,0 +1,22 @@
# compute.pp
resources { 'nova_config':
purge => true,
}
class { 'nova::ubuntu::compute':
api_server => '10.0.0.4',
rabbit_host => '10.0.0.4',
db_host => '10.0.0.4',
db_user => 'nova',
db_password => 'password',
image_service => 'nova.image.glance.GlanceImageService',
glance_host => '10.0.0.4',
flat_network_bridge => 'br100',
flat_network_bridge_ip => '11.0.0.2',
flat_network_bridge_netmask => '255.255.255.0',
enabled => 'true',
}