Это был бриз в CFEngine ... Но сейчас я нахожусь в среде Puppet , и мне нужно иметь возможность назначать / проверять / проверять определенные переменные sysctl.conf. В мире CFEngine я мог бы просто проверить наличие определенных строк в файле конфигурации ... Я нашел небольшую ссылку на модуль sysctl в вики Puppet и проект в github, который, кажется, выполняет то, что я хочу.
Но ни один из них не документирован. Я просто ищу способ отредактировать пару значений, таких как net.core.rmem_default
и net.core.wmem_max
. В формате проекта, размещенного на github , конфиг в моем манифесте init.pp должен выглядеть следующим образом:
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";
}
}
Просматривая форумы и списки рассылки, кажется, что существует разница в разнице между подключаемыми модулями и модулями Puppet. Термины почти взаимозаменяемы ... В конечном итоге мне понадобилось включить функцию pluginsync на моих клиентах, чтобы избежать некоторых ошибок. Я думал, что это был модуль!
Текущие ошибки клиента:
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
Любые мысли о том, как сделать это с наименьшим количеством боли?
Редактировать: Я затронут этой ошибкой ?
Редактировать: Исправлено использование библиотеки Augeas в соответствии с предложением Джеффа Ферланда и из вики Puppet .
Я создал sysctl
модуль ...
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"],
}
}
... и другой модуль для установки соответствующих настроек ...
class prod_sysctl {
include sysctl
sysctl::conf {
# increase PID rollover value
"kernel.pid_max": value => "1048576";
}
}