これはCFEngineで簡単にできました...しかし、今はPuppet環境にいるので、特定のsysctl.conf変数を割り当て/確認/確認できるようにする必要があります。CFEngineの世界では、構成ファイル内の特定の行を簡単にチェックできます... Puppet wikiのsysctlモジュールへの小さな参照と、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
最小限の痛みでこれを達成する方法についての考えはありますか?
編集:このバグの影響を受けますか?
編集:Jeff FerlandとPuppet wikiから提案されたAugeasライブラリの使用を修正しました。
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";
}
}