Bu CFEngine'de bir esinti oldu ... Ama şimdi bir Kukla ortamındayım ve bazı sysctl.conf değişkenlerini atayabilmemizi / sağlamamayı / kontrol edebilmem gerekiyor. CFEngine dünyasında, ben sadece bir yapılandırma dosyası içinde belirli satırları kontrol edebilir ... Kukla wiki sysctl modülüne küçük bir referans ve github bir proje istediğim gibi görünüyor buldum.
Ancak ikisi de gerçekten iyi belgelenmemiştir. Sadece net.core.rmem_default
ve gibi birkaç değeri düzenlemenin bir yolunu arıyorum net.core.wmem_max
. Github'da barındırılan proje biçiminde, init.pp manifest'imdeki yapılandırma şöyle görünmelidir:
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";
}
}
Forumlardan ve posta listelerinden geçerken, Kukla eklentileri ve modülleri arasındaki fark konusunda karışıklık var gibi görünüyor. Terimler neredeyse birbirinin yerine kullanılıyor ... Bazı tüylü hataları aşmak için müşterilerimde pluginsync'i etkinleştirmem gerekiyordu. Bunun bir modül olduğunu düşündüm!
Geçerli istemci hataları:
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
Bunu en az acıyla nasıl başaracağınıza dair herhangi bir düşünce var mı?
Düzenleme: Bu hatadan etkileniyor muyum ?
Düzenleme: Jeff Ferland ve Kukla wiki tarafından önerilen Augeas kütüphanesi kullanılarak düzeltildi .
Bir sysctl
modül oluşturdum ...
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"],
}
}
... ve ilgili ayarları yapmak için başka bir modül ...
class prod_sysctl {
include sysctl
sysctl::conf {
# increase PID rollover value
"kernel.pid_max": value => "1048576";
}
}