Ini sangat mudah di CFEngine ... Tapi saya berada di lingkungan Wayang sekarang, dan harus dapat menetapkan / memastikan / memeriksa variabel sysctl.conf tertentu. Di dunia CFEngine, saya cukup memeriksa baris tertentu dalam file konfigurasi ... Saya telah menemukan referensi kecil ke modul sysctl pada wiki Wayang dan sebuah proyek di github yang tampaknya melakukan apa yang saya inginkan.
Tetapi tidak ada yang benar-benar didokumentasikan dengan baik. Saya hanya mencari cara untuk mengedit beberapa nilai seperti net.core.rmem_default
dan net.core.wmem_max
. Dalam format proyek yang dihosting di github , konfigurasi dalam manifes init.pp saya akan terlihat seperti:
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";
}
}
Melalui forum dan milis, tampaknya ada kebingungan tentang perbedaan antara plugin dan modul Wayang. Istilah ini hampir digunakan secara bergantian ... Saya akhirnya perlu mengaktifkan pluginsync pada klien saya untuk melewati beberapa kesalahan berbulu. Saya pikir ini adalah modul!
Kesalahan klien saat ini:
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
Adakah pemikiran tentang bagaimana menyelesaikan ini dengan paling sedikit rasa sakit?
Sunting: Apakah saya terpengaruh oleh bug ini ?
Sunting: Diperbaiki menggunakan perpustakaan Augeas seperti yang disarankan oleh Jeff Ferland dan dari wiki Wayang .
Saya membuat sysctl
modul ...
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"],
}
}
... dan modul lain untuk mengatur pengaturan yang relevan ...
class prod_sysctl {
include sysctl
sysctl::conf {
# increase PID rollover value
"kernel.pid_max": value => "1048576";
}
}