From 55f7f2b01c4c4cefcfe66e70c2cdbdfff273baad Mon Sep 17 00:00:00 2001 From: Joe Topjian Date: Mon, 30 Jul 2012 17:09:32 +0000 Subject: [PATCH] Further edits. --- manifests/all.pp | 31 +++-- manifests/auth_file.pp | 3 +- manifests/compute.pp | 161 ------------------------- manifests/controller.pp | 225 +++++++++++++++++------------------ manifests/db/mysql.pp | 55 ++++----- manifests/glance.pp | 8 +- manifests/horizon.pp | 34 ++++-- manifests/keystone.pp | 66 +++++----- manifests/nova/compute.pp | 62 ++++++++-- manifests/nova/controller.pp | 13 +- tests/compute.pp | 2 +- 11 files changed, 276 insertions(+), 384 deletions(-) delete mode 100644 manifests/compute.pp diff --git a/manifests/all.pp b/manifests/all.pp index d4002f6..4bd12fb 100644 --- a/manifests/all.pp +++ b/manifests/all.pp @@ -68,6 +68,7 @@ class openstack::all ( # Keystone $keystone_db_user = 'keystone', $keystone_db_dbname = 'keystone', + $keystone_admin_tenant = 'admin', # Nova $nova_db_user = 'nova', $nova_db_dbname = 'nova', @@ -89,8 +90,13 @@ class openstack::all ( $vnc_enabled = true, # General $enabled = true, - $verbose = false -) inherits openstack::params { + $verbose = 'False' +) { + + # Ensure things are run in order + Class['openstack::db::mysql'] -> Class['openstack::keystone'] + Class['openstack::db::mysql'] -> Class['openstack::glance'] + Class['openstack::db::mysql'] -> Class['openstack::nova::controller'] # set up mysql server case $db_type { @@ -122,11 +128,14 @@ class openstack::all ( keystone_db_dbname => $keystone_db_dbname, keystone_db_user => $keystone_db_user, keystone_admin_token => $keystone_admin_token, + keystone_admin_tenant => $keystone_admin_tenant, admin_email => $admin_email, admin_password => $admin_password, public_address => $public_address, internal_address => '127.0.0.1', - admin_address => '127.0.0.1', + admin_address => '127.0.0.1', + glance_user_password => $glance_user_password, + nova_user_password => $nova_user_password, } ######## GLANCE ########## @@ -138,9 +147,6 @@ class openstack::all ( glance_db_dbname => $glance_db_dbname, glance_db_password => $glance_db_password, glance_user_password => $glance_user_password, - public_address => $public_address, - admin_address => '127.0.0.1', - internal_address => '127.0.0.1', } ######## NOVA ########### @@ -208,11 +214,11 @@ class openstack::all ( iscsi_ip_address => '127.0.0.1', # VNC vnc_enabled => $vnc_enabled, - vncserver_listen => $vnc_server_listen, - vncserver_proxyclient_address => '127.0.0.1', - vncproxy_host => '127.0.0.1', + vncproxy_host => $public_address, # Nova nova_user_password => $nova_user_password, + # Rabbit + rabbit_password => $rabbit_password, # General verbose => $verbose, exported_resources => false, @@ -230,6 +236,11 @@ class openstack::all ( } ######## auth file ######## - class { 'openstack::auth_file': } + class { 'openstack::auth_file': + public_address => $public_address, + admin_password => $admin_password, + keystone_admin_token => $keystone_admin_token, + admin_tenant => $keystone_admin_tenant, + } } diff --git a/manifests/auth_file.pp b/manifests/auth_file.pp index bd1bf7d..f35ef8c 100644 --- a/manifests/auth_file.pp +++ b/manifests/auth_file.pp @@ -5,10 +5,11 @@ # class openstack::auth_file( $admin_password, + $public_address, $controller_node = '127.0.0.1', $keystone_admin_token = 'keystone_admin_token', $admin_user = 'admin', - $admin_tenant = 'openstack' + $admin_tenant = 'admin' ) { file { '/root/openrc': content => diff --git a/manifests/compute.pp b/manifests/compute.pp deleted file mode 100644 index 318b0df..0000000 --- a/manifests/compute.pp +++ /dev/null @@ -1,161 +0,0 @@ -# -# == Class: openstack::compute -# -# This class is intended to serve as -# a way of deploying compute nodes. -# -# This currently makes the following assumptions: -# - libvirt is used to manage the hypervisors -# - flatdhcp networking is used -# - glance is used as the backend for the image service -# -# === Parameters -# -# See params.pp -# -# === Examples -# -# class { 'openstack::compute': -# internal_address => '192.168.1.12', -# vncproxy_host => '192.168.1.1', -# nova_user_password => 'changeme', -# rabbit_password => 'changeme', -# } -# - -class openstack::compute ( - # Network - $public_address = undef, - $public_interface = 'eth0', - $private_interface = 'eth1', - $fixed_range = '10.0.0.0/24', - $network_manager = 'nova.network.manager.FlatDHCPManager', - $multi_host = false, - $network_config = {}, - # DB - $sql_connection = false, - # Nova - $purge_nova_config = true, - # Rabbit - $rabbit_host = false, - $rabbit_user = 'nova', - # Glance - $glance_api_servers = false, - # Virtualization - $libvirt_type = 'kvm', - # VNC - $vnc_enabled = true, - $vncserver_listen = undef, - $vncproxy_host = undef, - $vncserver_proxyclient_address = undef, - # Volumes - $manage_volumes = true, - $nova_volume = 'nova-volumes', - # General - $verbose = false, - $exported_resources = true, - $enabled = true, - # Required Network - $internal_address, - # Required Nova - $nova_user_password, - # Required Rabbit - $rabbit_password -) inherits openstack::params { - - # - # indicates that all nova config entries that we did - # not specifify in Puppet should be purged from file - # - if ($purge_nova_config) { - resources { 'nova_config': - purge => true, - } - } - - if $exported_resources { - Nova_config <<||>> - $final_sql_connection = false - $glance_connection = false - $rabbit_connection = false - } else { - $final_sql_connection = $sql_connection - $glance_connection = $glance_api_servers - $rabbit_connection = $rabbit_host - } - - # Configure Nova - if $enabled { - class { 'nova': - sql_connection => $final_sql_connection, - rabbit_userid => $rabbit_user, - rabbit_password => $rabbit_password, - image_service => 'nova.image.glance.GlanceImageService', - glance_api_servers => $glance_connection, - verbose => $verbose, - rabbit_host => $rabbit_connection, - } - } - - # Configure VNC variables - if ($vnc_enabled == true) { - if ($vncserver_listen == undef) { - $real_vncserver_listen = $internal_address - } else { - $real_vncserver_listen = $vncserver_listen - } - - if ($vncserver_proxyclient_address == undef) { - $real_vncserver_proxyclient_address = $internal_address - } else { - $real_vncserver_proxyclient_address = $vncserver_proxyclient_address - } - - if ($vncproxy_host == undef) { - if ($multi_host == true and $public_address != undef) { - $real_vncproxy_host = $public_address - } else { - fail('vncproxy_host must be set.') - } - } else { - # This should be the public IP of the cloud controller... - $real_vncproxy_host = $vncproxy_host - } - } else { - $real_vncserver_listen = undef - $real_vncserver_proxyclient_address = undef - $real_vncproxy_host = undef - } - - if $enabled { - class { 'openstack::nova::compute': - # Network - public_address => $public_address, - internal_address => $internal_address, - private_interface => $private_interface, - public_interface => $public_interface, - fixed_range => $fixed_range, - network_manager => $network_manager, - network_config => $network_config, - multi_host => $multi_host, - # Virtualization - libvirt_type => $libvirt_type, - # Volumes - nova_volume => $nova_volume, - manage_volumes => $manage_volumes, - iscsi_ip_address => $iscsi_ip_address, - # VNC - vnc_enabled => $vnc_enabled, - vncserver_listen => $real_vncserver_listen, - vncserver_proxyclient_address => $real_vncserver_proxyclient_address, - vncproxy_host => $real_vncproxy_host, - # Nova - nova_user_password => $nova_user_password, - # General - verbose => $verbose, - exported_resources => $exported_resources, - enabled => $enabled, - } - } - -} diff --git a/manifests/controller.pp b/manifests/controller.pp index 0fc6726..ecbc2e4 100644 --- a/manifests/controller.pp +++ b/manifests/controller.pp @@ -23,11 +23,28 @@ # } # class openstack::controller ( + # Required Network + $public_address, + # Required Database + $mysql_root_password, + # Required Keystone + $admin_email, + $admin_password, + $keystone_db_password, + $keystone_admin_token, + # Required Glance + $glance_db_password, + $glance_user_password, + # Required Nova + $nova_db_password, + $nova_user_password, + # Required Horizon + $secret_key, # Network $public_interface = 'eth0', $private_interface = 'eth1', - $internal_address = undef, - $admin_address = undef, + $internal_address = $public_address, + $admin_address = $public_address, $network_manager = 'nova.network.manager.FlatDHCPManager', $fixed_range = '10.0.0.0/24', $floating_range = false, @@ -44,6 +61,7 @@ class openstack::controller ( # Keystone $keystone_db_user = 'keystone', $keystone_db_dbname = 'keystone', + $keystone_admin_tenant = 'admin', # Glance $glance_db_user = 'glance', $glance_db_dbname = 'glance', @@ -64,100 +82,66 @@ class openstack::controller ( # General $verbose = false, $exported_resources = true, - $enabled = true, - # Required Network - $public_address, - # Required Database - $mysql_root_password, - # Required Keystone - $admin_email, - $admin_password, - $keystone_db_password, - $keystone_admin_token, - # Required Glance - $glance_db_password, - $glance_user_password, - # Required Nova - $nova_db_password, - $nova_user_password, - # Required Horizon - $secret_key -) inherits openstack::params { + $enabled = true +) { - - ## NOTE Class['glance::db::mysql'] -> Class['glance::registry'] - ## this dependency needs to exist (I forgot exactly why?) - # the db migration needs to happen after the dbs are created - - # Configure admin_address and internal address if needed. - if (admin_address == undef) { - $real_admin_address = $public_address - } else { - $real_admin_address = $admin_address - } - - if (internal_address == undef) { - $real_internal_address = $public_address - } else { - $real_internal_address = $internal_address - } + # Ensure things are run in order + Class['openstack::db::mysql'] -> Class['openstack::keystone'] + Class['openstack::db::mysql'] -> Class['openstack::glance'] + Class['openstack::db::mysql'] -> Class['openstack::nova::controller'] ####### DATABASE SETUP ###### - if $enabled { - # set up mysql server - case $db_type { - 'mysql': { - class { 'openstack::db::mysql': - mysql_root_password => $mysql_root_password, - mysql_bind_address => $mysql_bind_address, - mysql_account_security => $mysql_account_security, - allowed_hosts => $allowed_hosts, - keystone_db_user => $keystone_db_user, - keystone_db_password => $keystone_db_password, - keystone_db_dbname => $keystone_db_dbname, - glance_db_user => $glance_db_user, - glance_db_password => $glance_db_password, - glance_db_dbname => $glance_db_dbname, - nova_db_user => $nova_db_user, - nova_db_password => $nova_db_password, - nova_db_dbname => $nova_db_dbname, - } + # set up mysql server + case $db_type { + 'mysql': { + class { 'openstack::db::mysql': + mysql_root_password => $mysql_root_password, + mysql_bind_address => $mysql_bind_address, + mysql_account_security => $mysql_account_security, + keystone_db_user => $keystone_db_user, + keystone_db_password => $keystone_db_password, + keystone_db_dbname => $keystone_db_dbname, + glance_db_user => $glance_db_user, + glance_db_password => $glance_db_password, + glance_db_dbname => $glance_db_dbname, + nova_db_user => $nova_db_user, + nova_db_password => $nova_db_password, + nova_db_dbname => $nova_db_dbname, + allowed_hosts => $allowed_hosts, } } } ####### KEYSTONE ########### - if ($enabled) { - class { 'openstack::keystone': - verbose => $verbose, - db_type => $db_type, - db_host => '127.0.0.1', - keystone_db_password => $keystone_db_password, - keystone_db_dbname => $keystone_db_dbname, - keystone_db_user => $keystone_db_user, - keystone_admin_token => $keystone_admin_token, - admin_email => $admin_email, - admin_password => $admin_password, - public_address => $public_address, - internal_address => $internal_address, - admin_address => $admin_address, - } + class { 'openstack::keystone': + verbose => $verbose, + db_type => $db_type, + db_host => '127.0.0.1', + keystone_db_password => $keystone_db_password, + keystone_db_dbname => $keystone_db_dbname, + keystone_db_user => $keystone_db_user, + keystone_admin_token => $keystone_admin_token, + keystone_admin_tenant => $keystone_admin_tenant, + admin_email => $admin_email, + admin_password => $admin_password, + public_address => $public_address, + internal_address => $internal_address, + admin_address => $admin_address, + glance_user_password => $glance_user_password, + nova_user_password => $nova_user_password, + enabled => $enabled, } ######## BEGIN GLANCE ########## - if ($enabled) { - class { 'openstack::glance': - verbose => $verbose, - db_type => $db_type, - db_host => '127.0.0.1', - glance_db_user => $glance_db_user, - glance_db_dbname => $glance_db_dbname, - glance_db_password => $glance_db_password, - glance_user_password => $glance_user_password, - public_address => $public_address, - admin_address => $admin_address, - internal_address => $internal_addrss, - } + class { 'openstack::glance': + verbose => $verbose, + db_type => $db_type, + db_host => '127.0.0.1', + glance_db_user => $glance_db_user, + glance_db_dbname => $glance_db_dbname, + glance_db_password => $glance_db_password, + glance_user_password => $glance_user_password, + enabled => $enabled, } ######## BEGIN NOVA ########### @@ -171,39 +155,37 @@ class openstack::controller ( } } - if $enabled { - class { 'openstack::nova::controller': - # Database - db_host => '127.0.0.1', - # Network - network_manager => $network_manager, - network_config => $network_config, - private_interface => $private_interface, - public_interface => $public_interface, - floating_range => $floating_range, - fixed_range => $fixed_range, - public_address => $public_address, - admin_address => $admin_address, - internal_address => $internal_address, - auto_assign_floating_ip => $auto_assign_floating_ip, - create_networks => $create_networks, - num_networks => $num_networks, - multi_host => $multi_host, - # Nova - nova_user_password => $nova_user_password, - nova_db_password => $nova_db_password, - nova_db_user => $nova_db_user, - nova_db_dbname => $nova_db_dbname, - # Rabbit - rabbit_user => $rabbit_user, - rabbit_password => $rabbit_password, - # Glance - glance_api_servers => $glance_api_servers, - # General - verbose => $verbose, - enabled => $enabled, - exported_resources => $exported_resources, - } + class { 'openstack::nova::controller': + # Database + db_host => '127.0.0.1', + # Network + network_manager => $network_manager, + network_config => $network_config, + private_interface => $private_interface, + public_interface => $public_interface, + floating_range => $floating_range, + fixed_range => $fixed_range, + public_address => $public_address, + admin_address => $admin_address, + internal_address => $internal_address, + auto_assign_floating_ip => $auto_assign_floating_ip, + create_networks => $create_networks, + num_networks => $num_networks, + multi_host => $multi_host, + # Nova + nova_user_password => $nova_user_password, + nova_db_password => $nova_db_password, + nova_db_user => $nova_db_user, + nova_db_dbname => $nova_db_dbname, + # Rabbit + rabbit_user => $rabbit_user, + rabbit_password => $rabbit_password, + # Glance + glance_api_servers => $glance_api_servers, + # General + verbose => $verbose, + enabled => $enabled, + exported_resources => $exported_resources, } ######## Horizon ######## @@ -217,5 +199,10 @@ class openstack::controller ( } ######## auth file ######## - class { 'openstack::auth_file': } + class { 'openstack::auth_file': + public_address => $public_address, + admin_password => $admin_password, + keystone_admin_token => $keystone_admin_token, + admin_tenant => $keystone_admin_tenant, + } } diff --git a/manifests/db/mysql.pp b/manifests/db/mysql.pp index d57fe03..69b1e09 100644 --- a/manifests/db/mysql.pp +++ b/manifests/db/mysql.pp @@ -25,7 +25,7 @@ class openstack::db::mysql ( $mysql_root_password, $keystone_db_password, $glance_db_password, - $nova_db_password + $nova_db_password, # MySQL $mysql_bind_address = '0.0.0.0', $mysql_account_security = true, @@ -47,39 +47,36 @@ class openstack::db::mysql ( config_hash => { 'root_password' => $mysql_root_password, 'bind_address' => $mysql_bind_address, - } + }, enabled => $enabled, } - if $enabled { - # If enabled, secure the mysql installation - # This removes default users and guest access - if $mysql_account_security { - class { 'mysql::server::account_security': } - } + # This removes default users and guest access + if $mysql_account_security { + class { 'mysql::server::account_security': } + } - # Create the Keystone db - class { 'keystone::db::mysql': - user => $keystone_db_user, - password => $keystone_db_password, - dbname => $keystone_db_dbname, - allowed_hosts => $allowed_hosts, - } + # Create the Keystone db + class { 'keystone::db::mysql': + user => $keystone_db_user, + password => $keystone_db_password, + dbname => $keystone_db_dbname, + allowed_hosts => $allowed_hosts, + } - # Create the Glance db - class { 'glance::db::mysql': - user => $glance_db_user, - password => $glance_db_password, - dbname => $glance_db_dbname, - allowed_hosts => $allowed_hosts, - } + # Create the Glance db + class { 'glance::db::mysql': + user => $glance_db_user, + password => $glance_db_password, + dbname => $glance_db_dbname, + allowed_hosts => $allowed_hosts, + } - # Create the Nova db - class { 'nova::db::mysql': - user => $nova_db_user, - password => $nova_db_password, - dbname => $nova_db_dbname, - allowed_hosts => $allowed_hosts, - } + # Create the Nova db + class { 'nova::db::mysql': + user => $nova_db_user, + password => $nova_db_password, + dbname => $nova_db_dbname, + allowed_hosts => $allowed_hosts, } } diff --git a/manifests/glance.pp b/manifests/glance.pp index 69c04e6..ad4a60f 100644 --- a/manifests/glance.pp +++ b/manifests/glance.pp @@ -21,14 +21,15 @@ # } class openstack::glance ( - $keystone_host, $db_host, $glance_user_password, $glance_db_password, + $keystone_host = '127.0.0.1', + $auth_uri = "http://${keystone_host}:5000/", $db_type = 'mysql', $glance_db_user = 'glance', $glance_db_dbname = 'glance', - $verbose = false, + $verbose = 'False', $enabled = true ) { @@ -45,6 +46,8 @@ class openstack::glance ( log_debug => $verbose, auth_type => 'keystone', auth_port => '35357', + auth_uri => $auth_uri, + auth_host => $keystone_host, keystone_tenant => 'services', keystone_user => 'glance', keystone_password => $glance_user_password, @@ -58,6 +61,7 @@ class openstack::glance ( auth_host => $keystone_host, auth_port => '35357', auth_type => 'keystone', + auth_uri => $auth_uri, keystone_tenant => 'services', keystone_user => 'glance', keystone_password => $glance_user_password, diff --git a/manifests/horizon.pp b/manifests/horizon.pp index cc9405a..93ecc30 100644 --- a/manifests/horizon.pp +++ b/manifests/horizon.pp @@ -4,6 +4,10 @@ # Class to install / configure horizon. # Will eventually include apache and ssl. # +# NOTE: Will the inclusion of memcache be an issue? +# Such as if the server already has memcache installed? +# -jtopjian +# # === Parameters # # See params.pp @@ -16,12 +20,17 @@ # class openstack::horizon ( - $cache_server_ip = '127.0.0.1', - $cache_server_port = '11211', - $swift = false, - $quantum = false, - $horizon_app_links = undef, - $secret_key + $secret_key, + $cache_server_ip = '127.0.0.1', + $cache_server_port = '11211', + $swift = false, + $quantum = false, + $horizon_app_links = undef, + $keystone_host = '127.0.0.1', + $keystone_scheme = 'http', + $keystone_default_role = 'Member', + $django_debug = 'False', + $api_result_limit = 1000 ) { class { 'memcached': @@ -31,9 +40,14 @@ class openstack::horizon ( } class { '::horizon': - secret_key => $secret_key, - swift => $swift, - quantum => $quantum, - horizon_app_links => $horizon_app_links, + secret_key => $secret_key, + swift => $swift, + quantum => $quantum, + horizon_app_links => $horizon_app_links, + keystone_host => $keystone_host, + keystone_scheme => $keystone_scheme, + keystone_default_role => $keystone_default_role, + django_debug => $django_debug, + api_result_limit => $api_result_limit, } } diff --git a/manifests/keystone.pp b/manifests/keystone.pp index 292b962..32466df 100644 --- a/manifests/keystone.pp +++ b/manifests/keystone.pp @@ -19,33 +19,26 @@ # } class openstack::keystone ( - $db_type = 'mysql', - $keystone_db_user = 'keystone', - $keystone_db_dbname = 'keystone', - $keystone_admin_tenant = 'admin', - $admin_address = undef, - $internal_address = undef, - $verbose = false, $db_host, $keystone_db_password, $keystone_admin_token, $admin_email, $admin_password, - $public_address -) inherits openstack::params { - - # Configure admin_address and internal address if needed. - if (admin_address == undef) { - $real_admin_address = $public_address - } else { - $real_admin_address = $admin_address - } - - if (internal_address == undef) { - $real_internal_address = $public_address - } else { - $real_internal_address = $internal_address - } + $glance_user_password, + $nova_user_password, + $public_address, + $db_type = 'mysql', + $keystone_db_user = 'keystone', + $keystone_db_dbname = 'keystone', + $keystone_admin_tenant = 'admin', + $verbose = 'False', + $bind_host = '0.0.0.0', + $admin_address = $public_address, + $internal_address = $public_address, + $glance = true, + $nova = true, + $enabled = true, +) { # Install and configure Keystone class { '::keystone': @@ -53,6 +46,7 @@ class openstack::keystone ( log_debug => $verbose, catalog_type => 'sql', admin_token => $keystone_admin_token, + enabled => $enabled, } # Setup the admin user @@ -65,16 +59,28 @@ class openstack::keystone ( # Setup the Keystone Identity Endpoint class { 'keystone::endpoint': public_address => $public_address, - admin_address => $real_admin_address, - internal_address => $real_internal_address, + admin_address => $admin_address, + internal_address => $internal_address, } - # Configure Glance to use Keystone - class { 'glance::keystone::auth': - password => $glance_user_password, - public_address => $public_address, - admin_address => $real_admin_address, - internal_address => $real_internal_address, + # Configure Glance endpoint in Keystone + if $glance { + class { 'glance::keystone::auth': + password => $glance_user_password, + public_address => $public_address, + admin_address => $admin_address, + internal_address => $internal_address, + } + } + + # Configure Nova endpoint in Keystone + if $nova { + class { 'nova::keystone::auth': + password => $nova_user_password, + public_address => $public_address, + admin_address => $admin_address, + internal_address => $internal_address, + } } # Configure the Keystone database diff --git a/manifests/nova/compute.pp b/manifests/nova/compute.pp index 82ddb44..18837cd 100644 --- a/manifests/nova/compute.pp +++ b/manifests/nova/compute.pp @@ -1,5 +1,5 @@ # -# == Class: openstack::nova::compute +# == Class: openstack::compute # # Manifest to install/configure nova-compute and nova-volume # @@ -15,18 +15,13 @@ # nova_user_password => 'changeme', # } -# NOTE this file should not actually change from the old openstack::compute -# class its worth doing a diff of the old file to better understadn the differneces - -# -# NOTE move this to openstack::compute -# NOTE grab all of the missing logic from openstack::compute - class openstack::nova::compute ( # Required Network $internal_address, # Required Nova $nova_user_password, + # Required Rabbit + $rabbit_password, # Network $public_address = undef, $public_interface = 'eth0', @@ -35,6 +30,15 @@ class openstack::nova::compute ( $network_manager = 'nova.network.manager.FlatDHCPManager', $network_config = {}, $multi_host = false, + # DB + $sql_connection = false, + # Nova + $purge_nova_config = true, + # Rabbit + $rabbit_host = false, + $rabbit_user = 'nova', + # Glance + $glance_api_servers = false, # Virtualization $libvirt_type = 'kvm', # Volumes @@ -43,7 +47,6 @@ class openstack::nova::compute ( $iscsi_ip_address = $internal_address, # VNC $vnc_enabled = true, - $vncserver_proxyclient_address = undef, $vncproxy_host = undef, # General $verbose = false, @@ -51,9 +54,45 @@ class openstack::nova::compute ( $enabled = true ) { + # + # 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, + } + } + } + + if $exported_resources { + Nova_config <<||>> + $final_sql_connection = false + $glance_connection = false + $rabbit_connection = false + } else { + $final_sql_connection = $sql_connection + $glance_connection = $glance_api_servers + $rabbit_connection = $rabbit_host + } + + # Configure Nova + if ! defined( Class[nova] ) { + class { 'nova': + sql_connection => $final_sql_connection, + rabbit_userid => $rabbit_user, + rabbit_password => $rabbit_password, + image_service => 'nova.image.glance.GlanceImageService', + glance_api_servers => $glance_connection, + verbose => $verbose, + rabbit_host => $rabbit_connection, + } + } + # Install / configure nova-compute class { '::nova::compute': - enabled => true, + enabled => $enabled, vnc_enabled => $vnc_enabled, vncserver_proxyclient_address => $internal_address, vncproxy_host => $vncproxy_host, @@ -62,7 +101,7 @@ class openstack::nova::compute ( # Configure libvirt for nova-compute class { 'nova::compute::libvirt': libvirt_type => $libvirt_type, - vncserver_listen => $real_vncserver_listen, + vncserver_listen => $internal_address, } # if the compute node should be configured as a multi-host @@ -92,6 +131,7 @@ class openstack::nova::compute ( } # set up configuration for networking + # NOTE should the if block be removed? -jtopjian if $enable_network_service { class { 'nova::network': private_interface => $private_interface, diff --git a/manifests/nova/controller.pp b/manifests/nova/controller.pp index cd6a9cc..e58fee9 100644 --- a/manifests/nova/controller.pp +++ b/manifests/nova/controller.pp @@ -58,7 +58,7 @@ class openstack::nova::controller ( $nova_user_password, $nova_db_password, -) inherits openstack::params { +) { # Configure admin_address and internal address if needed. if (admin_address == undef) { @@ -114,14 +114,6 @@ class openstack::nova::controller ( enabled => $enabled, } - # Configure Nova to use Keystone - class { 'nova::keystone::auth': - password => $nova_user_password, - public_address => $public_address, - admin_address => $admin_address, - internal_address => $internal_address, - } - # Configure Nova class { 'nova': sql_connection => $sql_connection, @@ -181,9 +173,10 @@ class openstack::nova::controller ( 'nova::cert', 'nova::consoleauth' ]: - enabled => true + enabled => $enabled, } + # NOTE should this just be enabled => $vnc_enabled? -jtopjian if $vnc_enabled { class { 'nova::vncproxy': enabled => true, diff --git a/tests/compute.pp b/tests/compute.pp index f5e122b..6dd835d 100644 --- a/tests/compute.pp +++ b/tests/compute.pp @@ -1,4 +1,4 @@ -class { 'openstack::compute': +class { 'openstack::nova::compute': exported_resources => false, sql_connection => 'mysql://foo:bar@192.168.1.1/nova', glance_api_servers => '192.168.1.1:9292',