Esto fue muy fácil en CFEngine ... Pero ahora estoy en un entorno de Puppet y necesito poder asignar / asegurar / verificar ciertas variables sysctl.conf. En el mundo de CFEngine, simplemente podría verificar si hay líneas específicas dentro de un archivo de configuración ... He encontrado una pequeña referencia a un módulo sysctl en el wiki de Puppet y un proyecto en github que parece hacer lo que quiero.
Pero ninguno de los dos está realmente bien documentado. Simplemente estoy buscando una manera de editar un par de valores como net.core.rmem_default
y net.core.wmem_max
. En el formato del proyecto alojado en github , la configuración en mi manifiesto init.pp debería verse así:
class sysctl {
sysctl::value {
"net.core.rmem_default": value => "9000000";
"net.core.wmem_default": value => "9000000";
"net.core.rmem_max": value => "16777216";
"net.core.wmem_max": value => "16777216";
}
}
Al revisar foros y listas de correo, parece haber confusión sobre la diferencia entre los complementos y módulos de Puppet. Los términos casi se usan indistintamente ... Terminé necesitando habilitar pluginsync en mis clientes para superar algunos errores mentales. ¡Pensé que esto era un módulo!
Los errores actuales del cliente:
info: Loading downloaded plugin /var/lib/puppet/lib/puppet/type/sysctl.rb
info: Loading downloaded plugin /var/lib/puppet/lib/puppet/provider/sysctl/parsed.rb
err: Could not retrieve catalog from remote server: Error 400 on SERVER: Puppet::Parser::AST::Resource failed with error
ArgumentError: Invalid resource type sysctl::value at /var/lib/puppet/base/modules/sysctl/manifests/init.pp:12 on node shimano.deore.abc.net
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run
¿Alguna idea sobre cómo lograr esto con la menor cantidad de dolor?
Editar: ¿Estoy afectado por este error ?
Editar: Se corrigió el uso de la biblioteca Augeas como lo sugirió Jeff Ferland y del wiki Puppet .
Creé un sysctl
módulo ...
class sysctl {
# nested class/define
define conf ( $value ) {
# $name is provided by define invocation
# guid of this entry
$key = $name
$context = "/files/etc/sysctl.conf"
augeas { "sysctl_conf/$key":
context => "$context",
onlyif => "get $key != '$value'",
changes => "set $key '$value'",
notify => Exec["sysctl"],
}
}
file { "sysctl_conf":
name => $operatingsystem ? {
default => "/etc/sysctl.conf",
},
}
exec { "/sbin/sysctl -p":
alias => "sysctl",
refreshonly => true,
subscribe => File["sysctl_conf"],
}
}
... y otro módulo para configurar los ajustes relevantes ...
class prod_sysctl {
include sysctl
sysctl::conf {
# increase PID rollover value
"kernel.pid_max": value => "1048576";
}
}