# == Class: nova::compute # # Installs the nova-compute service # # === Parameters: # # [*enabled*] # (optional) Whether to enable the nova-compute service # Defaults to false # # [*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 # # [*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 # # [*pci_passthrough_whitelist*] # (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' } ] " # # [*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 # class nova::compute ( $enabled = false, $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, $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', $pci_passthrough = undef, $default_availability_zone = 'nova', $default_schedule_zone = undef, $internal_service_availability_zone = 'internal', ) { include nova::params nova_config { 'DEFAULT/reserved_host_memory_mb': value => $reserved_host_memory; 'DEFAULT/compute_manager': value => $compute_manager; } 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 { # Install bridge-utils if we use nova-network package { 'bridge-utils': ensure => present, before => Nova::Generic_service['compute'], } } 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, } nova_config { 'DEFAULT/force_raw_images': value => $force_raw_images; } if ($pci_passthrough) { nova_config { 'DEFAULT/pci_passthrough_whitelist': value => check_array_of_hash($pci_passthrough); } } 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; } } }