Files
puppet-openstack/manifests/nova/compute.pp
Joe Topjian 89beb232e4 Beginning cleanup/refactor of puppetlabs-openstack.
Started to create individual manifests for core openstack components such as
Glance, keystone, nova, and horizon. Began to incorporate those
manifests into main manifests. Wrote some tests. Fixed some typos.
2012-10-16 11:20:01 -07:00

108 lines
3.6 KiB
Puppet

#
# == Class: openstack::nova::compute
#
# Manifest to install/configure nova-compute and nova-volume
#
# === Parameters
#
# See params.pp
#
class openstack::nova::compute (
# Network
$public_address = $::openstack::params::public_address,
$private_interface = $::openstack::params::private_interface,
$public_interface = $::openstack::params::public_interface,
$fixed_range = $::openstack::params::fixed_range,
$network_manager = $::openstack::params::network_manager,
$network_config = $::openstack::params::network_config,
$multi_host = $::openstack::params::multi_host,
# Virtualization
$libvirt_type = $::openstack::params::libvirt_type,
# Volumes
$nova_volume = $::openstack::params::nova_volume,
$manage_volumes = $::openstack::params::manage_volume,
$iscsi_ip_address = $::openstack::params::iscsi_ip_address,
# VNC
$vnc_enabled = $::openstack::params::vnc_enabled,
$vncserver_listen = $::openstack::params::vncserver_listen,
$vncserver_proxyclient_address = $::openstack::params::vncserver_proxyclient_address,
$vncproxy_host = $::openstack::params::vncproxy_host,
# Nova
$nova_user_password = $::openstack::params::nova_user_password,
# General
$verbose = $::openstack::params::verbose,
$exported_resources = $::openstack::params::exported_resources,
$enabled = $::openstack::params::enabled
) inherits openstack::params {
# Install / configure nova-compute
class { '::nova::compute':
enabled => true,
vnc_enabled => $vnc_enabled,
vncserver_proxyclient_address => $vncserver_proxyclient_address,
vncproxy_host => $vncproxy_host,
}
# Configure libvirt for nova-compute
class { 'nova::compute::libvirt':
libvirt_type => $libvirt_type,
vncserver_listen => $vncserver_listen,
}
# if the compute node should be configured as a multi-host
# compute installation
if $multi_host {
include keystone::python
nova_config {
'multi_host': value => 'True';
'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 => $enabled,
admin_tenant_name => 'services',
admin_user => 'nova',
admin_password => $nova_user_password,
}
} else {
$enable_network-service = false
nova_config {
'multi_host': value => 'False';
'send_arp_for_ha': value => 'False';
}
}
# set up configuration for networking
if $enable_network_service {
class { 'nova::network':
private_interface => $private_interface,
public_interface => $public_interface,
fixed_range => $fixed_range,
floating_range => false, # double check
network_manager => $network_manager,
config_overrides => $network_config,
create_networks => false, # double check
enabled => $enable_network_service,
install_service => $enable_network_service,
}
}
if $manage_volumes {
# Install / configure nova-volume
class { 'nova::volume':
enabled => $enabled,
}
if $enabled {
class { 'nova::volume::iscsi':
volume_group => $nova_volume,
iscsi_ip_address => $internal_address,
}
}
}
}