puppet-nova/manifests/compute/libvirt_guests.pp

100 lines
3.6 KiB
Puppet

# == Class: nova::compute::libvirt_guests
#
# manages configuration for starting running instances when compute node
# gets rebooted.
#
# === Parameters:
#
# [*enabled*]
# (optional) Whether the libvirt-guests service will be run
# Defaults to false
#
# [*package_ensure*]
# (optional) The state of libvirt packages
# Defaults to 'present'
#
# [*on_boot*]
# (optional) libvirt-guests parameter - action taken on host boot
# - start all guests which were running on shutdown are started on boot
# regardless on their autostart settings
# - ignore libvirt-guests init script won't start any guest on boot, however,
# guests marked as autostart will still be automatically started by
# libvirtd
# Defaults to 'ignore'
#
# [*on_shutdown*]
# (optional) libvirt-guests parameter - action taken on host shutdown
# - suspend all running guests are suspended using virsh managedsave
# - shutdown all running guests are asked to shutdown. Please be careful with
# this settings since there is no way to distinguish between a
# guest which is stuck or ignores shutdown requests and a guest
# which just needs a long time to shutdown. When setting
# ON_SHUTDOWN=shutdown, you must also set SHUTDOWN_TIMEOUT to a
# value suitable for your guests.
# Defaults to 'shutdown'
#
# [*shutdown_timeout*]
# (optional) Number of seconds we're willing to wait for a guest to shut
# down. If parallel shutdown is enabled, this timeout applies as a timeout
# for shutting down all guests on a single URI defined in the variable URIS.
# If this is 0, then there is no time out (use with caution, as guests might
# not respond to a shutdown request). The default value is 300 seconds
# (5 minutes).
# Defaults to 300.
#
# [*manage_service*]
# (optional) Whether to start/stop the service
# Defaults to false
#
class nova::compute::libvirt_guests (
$enabled = false,
$package_ensure = 'present',
$shutdown_timeout = '300',
$on_boot = 'ignore',
$on_shutdown = 'shutdown',
$manage_service = false,
) {
include nova::params
include nova::deps
Anchor['nova::config::begin']
-> File_line<| tag == 'libvirt-guests-file_line'|>
-> Anchor['nova::config::end']
case $::osfamily {
'RedHat': {
file_line { '/etc/sysconfig/libvirt-guests ON_BOOT':
path => '/etc/sysconfig/libvirt-guests',
line => "ON_BOOT=${on_boot}",
match => '^#?ON_BOOT=.*',
tag => 'libvirt-guests-file_line',
}
file_line { '/etc/sysconfig/libvirt-guests ON_SHUTDOWN':
path => '/etc/sysconfig/libvirt-guests',
line => "ON_SHUTDOWN=${on_shutdown}",
match => '^#?ON_SHUTDOWN=.*',
tag => 'libvirt-guests-file_line',
}
file_line { '/etc/sysconfig/libvirt-guests SHUTDOWN_TIMEOUT':
path => '/etc/sysconfig/libvirt-guests',
line => "SHUTDOWN_TIMEOUT=${shutdown_timeout}",
match => '^#?SHUTDOWN_TIMEOUT=.*',
tag => 'libvirt-guests-file_line',
}
nova::generic_service { 'libvirt-guests':
enabled => $enabled,
manage_service => $manage_service,
package_name => $::nova::params::libvirt_guests_package_name,
service_name => $::nova::params::libvirt_guests_service_name,
ensure_package => $package_ensure
}
}
default: {
warning("Unsupported osfamily: ${::osfamily}, make sure you are configuring this yourself")
}
}
}