
This adds defined anchor points for external modules to hook into the software install, config and service dependency chain. This allows external modules to manage software installation (virtualenv, containers, etc) and service management (pacemaker) without needing rely on resources that may change or be renamed. Change-Id: I0b524e354b095f2642fd38a2f88536d15bcdf855
255 lines
7.8 KiB
Puppet
255 lines
7.8 KiB
Puppet
# == Class: nova::compute
|
|
#
|
|
# Installs the nova-compute service
|
|
#
|
|
# === Parameters:
|
|
#
|
|
# [*enabled*]
|
|
# (optional) Whether to enable the nova-compute service
|
|
# Defaults to true
|
|
#
|
|
# [*heal_instance_info_cache_interval*]
|
|
# (optional) Controls how often the instance info should be updated.
|
|
# Defaults to '60' , to disable you can set the value to zero.
|
|
#
|
|
# [*manage_service*]
|
|
# (optional) Whether to start/stop the service
|
|
# Defaults to true
|
|
#
|
|
# [*ensure_package*]
|
|
# (optional) The state for the nova-compute package
|
|
# Defaults to 'present'
|
|
#
|
|
# [*vnc_enabled*]
|
|
# (optional) Whether to use a VNC proxy
|
|
# Defaults to true
|
|
#
|
|
# [*vncserver_proxyclient_address*]
|
|
# (optional) The IP address of the server running the VNC proxy client
|
|
# Defaults to '127.0.0.1'
|
|
#
|
|
# [*vncproxy_host*]
|
|
# (optional) The host of the VNC proxy server
|
|
# Defaults to false
|
|
#
|
|
# [*vncproxy_protocol*]
|
|
# (optional) The protocol to communicate with the VNC proxy server
|
|
# Defaults to 'http'
|
|
#
|
|
# [*vncproxy_port*]
|
|
# (optional) The port to communicate with the VNC proxy server
|
|
# Defaults to '6080'
|
|
#
|
|
# [*vncproxy_path*]
|
|
# (optional) The path at the end of the uri for communication with the VNC proxy server
|
|
# Defaults to '/vnc_auto.html'
|
|
#
|
|
# [*vnc_keymap*]
|
|
# (optional) The keymap to use with VNC (ls -alh /usr/share/qemu/keymaps to list available keymaps)
|
|
# Defaults to 'en-us'
|
|
#
|
|
# [*force_config_drive*]
|
|
# (optional) Whether to force the config drive to be attached to all VMs
|
|
# Defaults to false
|
|
#
|
|
# [*virtio_nic*]
|
|
# (optional) Whether to use virtio for the nic driver of VMs
|
|
# Defaults to false
|
|
#
|
|
# [*neutron_enabled*]
|
|
# (optional) Whether to use Neutron for networking of VMs
|
|
# Defaults to true
|
|
#
|
|
# [*install_bridge_utils*]
|
|
# (optional) Whether to install the bridge-utils package or not.
|
|
# Applicable only for cases when Neutron was disabled
|
|
# Defaults to true
|
|
#
|
|
# [*network_device_mtu*]
|
|
# (optional) The MTU size for the interfaces managed by nova
|
|
# Defaults to undef
|
|
#
|
|
# [*instance_usage_audit*]
|
|
# (optional) Generate periodic compute.instance.exists notifications.
|
|
# Defaults to false
|
|
#
|
|
# [*instance_usage_audit_period*]
|
|
# (optional) Time period to generate instance usages for.
|
|
# Time period must be hour, day, month or year
|
|
# Defaults to 'month'
|
|
#
|
|
# [*force_raw_images*]
|
|
# (optional) Force backing images to raw format.
|
|
# Defaults to true
|
|
#
|
|
# [*reserved_host_memory*]
|
|
# Reserved host memory
|
|
# The amount of memory in MB reserved for the host.
|
|
# Defaults to '512'
|
|
#
|
|
# [*compute_manager*]
|
|
# Compute manager
|
|
# The driver that will manage the running instances.
|
|
# Defaults to nova.compute.manager.ComputeManager
|
|
#
|
|
# [*default_availability_zone*]
|
|
# (optional) Default compute node availability zone.
|
|
# Defaults to nova
|
|
#
|
|
# [*default_schedule_zone*]
|
|
# (optional) Availability zone to use when user doesn't specify one.
|
|
# Defaults to undef
|
|
#
|
|
# [*internal_service_availability_zone*]
|
|
# (optional) The availability zone to show internal services under.
|
|
# Defaults to internal
|
|
#
|
|
# [*pci_passthrough*]
|
|
# (optional) Pci passthrough hash in format of:
|
|
# Defaults to undef
|
|
# Example
|
|
# "[ { 'vendor_id':'1234','product_id':'5678' },
|
|
# { 'vendor_id':'4321','product_id':'8765','physical_network':'default' } ] "
|
|
#
|
|
# [*config_drive_format*]
|
|
# (optional) Config drive format. One of iso9660 (default) or vfat
|
|
# Defaults to undef
|
|
#
|
|
# [*allow_resize_to_same_host*]
|
|
# (optional) Allow destination machine to match source for resize.
|
|
# Useful when testing in single-host environments.
|
|
# Defaults to false
|
|
#
|
|
class nova::compute (
|
|
$enabled = true,
|
|
$manage_service = true,
|
|
$ensure_package = 'present',
|
|
$vnc_enabled = true,
|
|
$vncserver_proxyclient_address = '127.0.0.1',
|
|
$vncproxy_host = false,
|
|
$vncproxy_protocol = 'http',
|
|
$vncproxy_port = '6080',
|
|
$vncproxy_path = '/vnc_auto.html',
|
|
$vnc_keymap = 'en-us',
|
|
$force_config_drive = false,
|
|
$virtio_nic = false,
|
|
$neutron_enabled = true,
|
|
$install_bridge_utils = true,
|
|
$network_device_mtu = undef,
|
|
$instance_usage_audit = false,
|
|
$instance_usage_audit_period = 'month',
|
|
$force_raw_images = true,
|
|
$reserved_host_memory = '512',
|
|
$compute_manager = 'nova.compute.manager.ComputeManager',
|
|
$default_availability_zone = 'nova',
|
|
$default_schedule_zone = undef,
|
|
$internal_service_availability_zone = 'internal',
|
|
$heal_instance_info_cache_interval = '60',
|
|
$pci_passthrough = undef,
|
|
$config_drive_format = undef,
|
|
$allow_resize_to_same_host = false,
|
|
) {
|
|
|
|
include ::nova::deps
|
|
include ::nova::params
|
|
|
|
nova_config {
|
|
'DEFAULT/reserved_host_memory_mb': value => $reserved_host_memory;
|
|
'DEFAULT/compute_manager': value => $compute_manager;
|
|
'DEFAULT/heal_instance_info_cache_interval': value => $heal_instance_info_cache_interval;
|
|
'DEFAULT/allow_resize_to_same_host': value => $allow_resize_to_same_host;
|
|
}
|
|
|
|
if ($vnc_enabled) {
|
|
include ::nova::vncproxy::common
|
|
}
|
|
|
|
nova_config {
|
|
'DEFAULT/vnc_enabled': value => $vnc_enabled;
|
|
'DEFAULT/vncserver_proxyclient_address': value => $vncserver_proxyclient_address;
|
|
'DEFAULT/vnc_keymap': value => $vnc_keymap;
|
|
}
|
|
|
|
if $neutron_enabled != true and $install_bridge_utils {
|
|
# Install bridge-utils if we use nova-network
|
|
package { 'bridge-utils':
|
|
ensure => present,
|
|
tag => ['openstack', 'nova-support-package'],
|
|
}
|
|
}
|
|
|
|
nova::generic_service { 'compute':
|
|
enabled => $enabled,
|
|
manage_service => $manage_service,
|
|
package_name => $::nova::params::compute_package_name,
|
|
service_name => $::nova::params::compute_service_name,
|
|
ensure_package => $ensure_package,
|
|
before => Exec['networking-refresh']
|
|
}
|
|
|
|
if $force_config_drive {
|
|
nova_config { 'DEFAULT/force_config_drive': value => true }
|
|
} else {
|
|
nova_config { 'DEFAULT/force_config_drive': ensure => absent }
|
|
}
|
|
|
|
if $virtio_nic {
|
|
# Enable the virtio network card for instances
|
|
nova_config { 'DEFAULT/libvirt_use_virtio_for_bridges': value => true }
|
|
}
|
|
|
|
if $network_device_mtu {
|
|
nova_config {
|
|
'DEFAULT/network_device_mtu': value => $network_device_mtu;
|
|
}
|
|
} else {
|
|
nova_config {
|
|
'DEFAULT/network_device_mtu': ensure => absent;
|
|
}
|
|
}
|
|
|
|
if $instance_usage_audit and $instance_usage_audit_period in ['hour', 'day', 'month', 'year'] {
|
|
nova_config {
|
|
'DEFAULT/instance_usage_audit': value => $instance_usage_audit;
|
|
'DEFAULT/instance_usage_audit_period': value => $instance_usage_audit_period;
|
|
}
|
|
} else {
|
|
nova_config {
|
|
'DEFAULT/instance_usage_audit': ensure => absent;
|
|
'DEFAULT/instance_usage_audit_period': ensure => absent;
|
|
}
|
|
}
|
|
|
|
package { 'pm-utils':
|
|
ensure => present,
|
|
tag => ['openstack', 'nova-support-package'],
|
|
}
|
|
|
|
nova_config {
|
|
'DEFAULT/force_raw_images': value => $force_raw_images;
|
|
}
|
|
|
|
nova_config {
|
|
'DEFAULT/default_availability_zone': value => $default_availability_zone;
|
|
'DEFAULT/internal_service_availability_zone': value => $internal_service_availability_zone;
|
|
}
|
|
|
|
if $default_schedule_zone {
|
|
nova_config {
|
|
'DEFAULT/default_schedule_zone': value => $default_schedule_zone;
|
|
}
|
|
}
|
|
|
|
if ($pci_passthrough) {
|
|
nova_config {
|
|
'DEFAULT/pci_passthrough_whitelist': value => check_array_of_hash($pci_passthrough);
|
|
}
|
|
}
|
|
|
|
if ($config_drive_format) {
|
|
nova_config {
|
|
'DEFAULT/config_drive_format': value => $config_drive_format;
|
|
}
|
|
}
|
|
}
|