puppet-nova/manifests/spicehtml5proxy.pp

79 lines
2.4 KiB
Puppet

# == Class: nova::spice
#
# Configure spicehtml5 proxy
#
# SPICE is a new protocol which aims to address all the limitations in VNC,
# to provide good remote desktop support. This class aim to configure the nova
# services in charge of proxing websocket spicehtml5 request to kvm spice
#
# === Parameters:
#
# [*enabled*]
# (optional) enable spicehtml5proxy service
# Defaults to true
#
# [*manage_service*]
# (optional) Whether to start/stop the service
# Defaults to true
#
# [*host*]
# (optional) Listen address for the html5 console proxy
# Defaults to 0.0.0.0
#
# [*port*]
# (optional) Listen port for the html5 console proxy
# Defaults to 6082
#
# [*ensure_package*]
# (optional) Ensure package state
# Defaults to 'present'
#
class nova::spicehtml5proxy(
$enabled = true,
$manage_service = true,
$host = '0.0.0.0',
$port = '6082',
$ensure_package = 'present'
) {
include nova::deps
include nova::params
# Nodes running spicehtml5proxy do *not* need (and in fact, don't care)
# about [spice]/enable to be set. This setting is for compute nodes,
# where we must select VNC or SPICE so that it can be passed on to
# libvirt which passes it as parameter when starting VMs with KVM.
# Therefore, this setting is set within compute.pp only.
nova_config {
'spice/agent_enabled': value => $enabled;
'spice/html5proxy_host': value => $host;
'spice/html5proxy_port': value => $port;
}
# The Debian package needs some scheduling:
# 1/ Install the packagin
# 2/ Fix /etc/default/nova-consoleproxy
# 3/ Start the service
# Other OS don't need this scheduling and can use
# the standard nova::generic_service
if $::os_package_type == 'debian' {
if $enabled {
file_line { '/etc/default/nova-consoleproxy:NOVA_CONSOLE_PROXY_TYPE':
path => '/etc/default/nova-consoleproxy',
match => '^NOVA_CONSOLE_PROXY_TYPE=(.*)$',
line => 'NOVA_CONSOLE_PROXY_TYPE=spicehtml5',
tag => 'nova-consoleproxy',
require => Anchor['nova::config::begin'],
notify => Anchor['nova::config::end'],
}
}
}
nova::generic_service { 'spicehtml5proxy':
enabled => $enabled,
manage_service => $manage_service,
package_name => $::nova::params::spicehtml5proxy_package_name,
service_name => $::nova::params::spicehtml5proxy_service_name,
ensure_package => $ensure_package,
}
}