
The libvirt driver now allows utilizing file backed memory for qemu/KVM virtual machines, via a new configuration attribute ``[libvirt]/file_backed_memory``, defaulting to 0 (disabled). ``[libvirt]/file_backed_memory`` specifies the available capacity in MiB for file backed memory, at the directory configured for ``memory_backing_dir`` in libvirt's ``qemu.conf``. When enabled, the libvirt driver will report the configured value for the total memory capacity of the node, and will report used memory as the sum of all configured guest memory. Running Nova with file_backed_memory requires libvirt version 4.0.0 and qemu version 2.6.0 Related-Bug: 1793687 Change-Id: I0d9eb21fcab01266e501b7fc63c5b2bbb244956a
104 lines
2.7 KiB
Puppet
104 lines
2.7 KiB
Puppet
# == Class: nova::compute::libvirt::qemu
|
|
#
|
|
# Configures qemu limits for use by libvirt
|
|
#
|
|
# === Parameters:
|
|
#
|
|
# [*configure_qemu*]
|
|
# (optional) Whether or not configure qemu bits.
|
|
# Defaults to false.
|
|
#
|
|
# [*group*]
|
|
# (optional) Group under which the qemu should run.
|
|
# Defaults to undef.
|
|
#
|
|
# [*max_files*]
|
|
# (optional) Maximum number of opened files, per process.
|
|
# Defaults to 1024.
|
|
#
|
|
# [*max_processes*]
|
|
# (optional) Maximum number of processes that can be run by qemu user.
|
|
# Defaults to 4096.
|
|
#
|
|
# [*vnc_tls*]
|
|
# (optional) Enables TLS for vnc connections.
|
|
# Defaults to false.
|
|
#
|
|
# [*vnc_tls_verify*]
|
|
# (optional) Enables TLS client cert verification when vnc_tls is enabled.
|
|
# Defaults to true.
|
|
#
|
|
# [*memory_backing_dir*]
|
|
# (optional) This directory is used for memoryBacking source if configured as file.
|
|
# NOTE: big files will be stored here
|
|
# Defaults to undef.
|
|
#
|
|
class nova::compute::libvirt::qemu(
|
|
$configure_qemu = false,
|
|
$group = undef,
|
|
$max_files = 1024,
|
|
$max_processes = 4096,
|
|
$vnc_tls = false,
|
|
$vnc_tls_verify = true,
|
|
$memory_backing_dir = undef
|
|
){
|
|
|
|
include ::nova::deps
|
|
require ::nova::compute::libvirt
|
|
|
|
Anchor['nova::config::begin']
|
|
-> Augeas<| tag == 'qemu-conf-augeas'|>
|
|
-> Anchor['nova::config::end']
|
|
|
|
Augeas<| tag == 'qemu-conf-augeas'|>
|
|
~> Service['libvirt']
|
|
|
|
if $configure_qemu {
|
|
|
|
if $vnc_tls {
|
|
$vnc_tls_value = 1
|
|
$vnc_tls_verify_value = $vnc_tls_verify ? { true => 1, false => 0 }
|
|
} else {
|
|
$vnc_tls_value = 0
|
|
$vnc_tls_verify_value = 0
|
|
}
|
|
|
|
$augues_changes_default = [
|
|
"set max_files ${max_files}",
|
|
"set max_processes ${max_processes}",
|
|
"set vnc_tls ${vnc_tls_value}",
|
|
"set vnc_tls_x509_verify ${vnc_tls_verify_value}"
|
|
]
|
|
if $group and !empty($group) {
|
|
$augues_group_changes = ["set group ${group}"]
|
|
} else {
|
|
$augues_group_changes = []
|
|
}
|
|
if $memory_backing_dir and !empty($memory_backing_dir) {
|
|
$augues_memory_backing_dir_changes = ["set memory_backing_dir ${memory_backing_dir}"]
|
|
} else {
|
|
$augues_memory_backing_dir_changes = []
|
|
}
|
|
$augues_changes = concat($augues_changes_default, $augues_group_changes, $augues_memory_backing_dir_changes)
|
|
|
|
augeas { 'qemu-conf-limits':
|
|
context => '/files/etc/libvirt/qemu.conf',
|
|
changes => $augues_changes,
|
|
tag => 'qemu-conf-augeas',
|
|
}
|
|
} else {
|
|
augeas { 'qemu-conf-limits':
|
|
context => '/files/etc/libvirt/qemu.conf',
|
|
changes => [
|
|
'rm max_files',
|
|
'rm max_processes',
|
|
'rm group',
|
|
'rm vnc_tls',
|
|
'rm vnc_tls_x509_verify',
|
|
'rm memory_backing_dir'
|
|
],
|
|
tag => 'qemu-conf-augeas',
|
|
}
|
|
}
|
|
}
|