+++ /dev/null
-# == Class: nova::compute::libvirt
-#
-# Install and manage nova-compute guests managed
-# by libvirt
-#
-# === Parameters:
-#
-# [*libvirt_virt_type*]
-# (optional) Libvirt domain type. Options are: kvm, lxc, qemu, uml, xen
-# Replaces libvirt_type
-# Defaults to 'kvm'
-#
-# [*vncserver_listen*]
-# (optional) IP address on which instance vncservers should listen
-# Defaults to '127.0.0.1'
-#
-# [*migration_support*]
-# (optional) Whether to support virtual machine migration
-# Defaults to false
-#
-# [*libvirt_cpu_mode*]
-# (optional) The libvirt CPU mode to configure. Possible values
-# include custom, host-model, none, host-passthrough.
-# Defaults to 'host-model' if libvirt_virt_type is set to either
-# kvm or qemu, otherwise defaults to 'none'.
-#
-# [*libvirt_disk_cachemodes*]
-# (optional) A list of cachemodes for different disk types, e.g.
-# ["file=directsync", "block=none"]
-# If an empty list is specified, the disk_cachemodes directive
-# will be removed from nova.conf completely.
-# Defaults to an empty list
-#
-# [*libvirt_inject_password*]
-# (optional) Inject the admin password at boot time, without an agent.
-# Defaults to false
-#
-# [*libvirt_inject_key*]
-# (optional) Inject the ssh public key at boot time.
-# Defaults to false
-#
-# [*libvirt_inject_partition*]
-# (optional) The partition to inject to : -2 => disable, -1 => inspect
-# (libguestfs only), 0 => not partitioned, >0 => partition
-# number (integer value)
-# Defaults to -2
-#
-# [*remove_unused_base_images*]
-# (optional) Should unused base images be removed?
-# If undef is specified, remove the line in nova.conf
-# otherwise, use a boolean to remove or not the base images.
-# Defaults to undef
-#
-# [*remove_unused_kernels*]
-# (optional) Should unused kernel images be removed?
-# This is only safe to enable if all compute nodes
-# have been updated to support this option.
-# If undef is specified, remove the line in nova.conf
-# otherwise, use a boolean to remove or not the kernels.
-# Defaults to undef
-#
-# [*remove_unused_resized_minimum_age_seconds*]
-# (optional) Unused resized base images younger
-# than this will not be removed
-# If undef is specified, remove the line in nova.conf
-# otherwise, use a integer or a string to define after
-# how many seconds it will be removed.
-# Defaults to undef
-#
-# [*remove_unused_original_minimum_age_seconds*]
-# (optional) Unused unresized base images younger
-# than this will not be removed
-# If undef is specified, remove the line in nova.conf
-# otherwise, use a integer or a string to define after
-# how many seconds it will be removed.
-# Defaults to undef
-#
-# [*libvirt_service_name*]
-# (optional) libvirt service name.
-# Defaults to $::nova::params::libvirt_service_name
-#
-class nova::compute::libvirt (
- $libvirt_virt_type = 'kvm',
- $vncserver_listen = '127.0.0.1',
- $migration_support = false,
- $libvirt_cpu_mode = false,
- $libvirt_disk_cachemodes = [],
- $libvirt_inject_password = false,
- $libvirt_inject_key = false,
- $libvirt_inject_partition = -2,
- $remove_unused_base_images = undef,
- $remove_unused_kernels = undef,
- $remove_unused_resized_minimum_age_seconds = undef,
- $remove_unused_original_minimum_age_seconds = undef,
- $libvirt_service_name = $::nova::params::libvirt_service_name,
- # DEPRECATED PARAMETER
- $libvirt_type = false
-) inherits nova::params {
-
- include nova::params
-
- Service['libvirt'] -> Service['nova-compute']
-
- if $libvirt_type {
- warning ('The libvirt_type parameter is deprecated, use libvirt_virt_type instead.')
- $libvirt_virt_type_real = $libvirt_type
- } else {
- $libvirt_virt_type_real = $libvirt_virt_type
- }
-
- # libvirt_cpu_mode has different defaults depending on hypervisor.
- if !$libvirt_cpu_mode {
- case $libvirt_virt_type_real {
- 'kvm','qemu': {
- $libvirt_cpu_mode_real = 'host-model'
- }
- default: {
- $libvirt_cpu_mode_real = 'none'
- }
- }
- } else {
- $libvirt_cpu_mode_real = $libvirt_cpu_mode
- }
-
- if($::osfamily == 'Debian') {
- package { "nova-compute-${libvirt_virt_type_real}":
- ensure => present,
- before => Package['nova-compute'],
- require => Package['nova-common'],
- tag => ['openstack', 'nova'],
- }
- }
-
- if($::osfamily == 'RedHat' and $::operatingsystem != 'Fedora') {
- service { 'messagebus':
- ensure => running,
- enable => true,
- provider => $::nova::params::special_service_provider,
- }
- Package['libvirt'] -> Service['messagebus'] -> Service['libvirt']
-
- }
-
- if $migration_support {
- if $vncserver_listen != '0.0.0.0' and $vncserver_listen != '::0' {
- fail('For migration support to work, you MUST set vncserver_listen to \'0.0.0.0\' or \'::0\'')
- } else {
- class { 'nova::migration::libvirt': }
- }
- }
-
- package { 'libvirt':
- ensure => present,
- name => $::nova::params::libvirt_package_name,
- }
-
- service { 'libvirt' :
- ensure => running,
- enable => true,
- name => $libvirt_service_name,
- provider => $::nova::params::special_service_provider,
- require => Package['libvirt'],
- }
-
- nova_config {
- 'DEFAULT/compute_driver': value => 'libvirt.LibvirtDriver';
- 'DEFAULT/vncserver_listen': value => $vncserver_listen;
- 'libvirt/virt_type': value => $libvirt_virt_type_real;
- 'libvirt/cpu_mode': value => $libvirt_cpu_mode_real;
- 'libvirt/inject_password': value => $libvirt_inject_password;
- 'libvirt/inject_key': value => $libvirt_inject_key;
- 'libvirt/inject_partition': value => $libvirt_inject_partition;
- }
-
- if size($libvirt_disk_cachemodes) > 0 {
- nova_config {
- 'libvirt/disk_cachemodes': value => join($libvirt_disk_cachemodes, ',');
- }
- } else {
- nova_config {
- 'libvirt/disk_cachemodes': ensure => absent;
- }
- }
-
- if $remove_unused_kernels != undef {
- nova_config {
- 'libvirt/remove_unused_kernels': value => $remove_unused_kernels;
- }
- } else {
- nova_config {
- 'libvirt/remove_unused_kernels': ensure => absent;
- }
- }
-
- if $remove_unused_resized_minimum_age_seconds != undef {
- nova_config {
- 'libvirt/remove_unused_resized_minimum_age_seconds': value => $remove_unused_resized_minimum_age_seconds;
- }
- } else {
- nova_config {
- 'libvirt/remove_unused_resized_minimum_age_seconds': ensure => absent;
- }
- }
-
- if $remove_unused_base_images != undef {
- nova_config {
- 'DEFAULT/remove_unused_base_images': value => $remove_unused_base_images;
- }
- } else {
- nova_config {
- 'DEFAULT/remove_unused_base_images': ensure => absent;
- }
- }
-
- if $remove_unused_original_minimum_age_seconds != undef {
- nova_config {
- 'DEFAULT/remove_unused_original_minimum_age_seconds': value => $remove_unused_original_minimum_age_seconds;
- }
- } else {
- nova_config {
- 'DEFAULT/remove_unused_original_minimum_age_seconds': ensure => absent;
- }
- }
-}