Đây là một làn gió trong CFEngine ... Nhưng hiện tại tôi đang ở trong môi trường Puppet và cần có khả năng gán / đảm bảo / kiểm tra các biến sysctl.conf nhất định. Trong thế giới CFEngine, tôi chỉ có thể kiểm tra các dòng cụ thể trong tệp cấu hình ... Tôi đã tìm thấy một tham chiếu nhỏ đến mô-đun sysctl trên wiki Puppet và một dự án trong github xuất hiện để làm những gì tôi muốn.
Nhưng không thực sự được ghi nhận tốt. Tôi chỉ đơn giản là tìm cách chỉnh sửa một vài giá trị như net.core.rmem_default
và net.core.wmem_max
. Trong định dạng của dự án được lưu trữ trên github , cấu hình trong tệp kê khai init.pp của tôi sẽ trông như sau:
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";
}
}
Đi qua các diễn đàn và danh sách gửi thư, dường như có sự nhầm lẫn về sự khác biệt giữa các plugin và mô-đun rối. Các thuật ngữ gần như được sử dụng thay thế cho nhau ... Tôi cuối cùng cần phải kích hoạt pluginsync trên máy khách của mình để vượt qua một số lỗi lông. Tôi nghĩ rằng đây là một mô-đun!
Các lỗi máy khách hiện tại:
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
Bạn có suy nghĩ gì về cách thực hiện điều này với ít đau đớn nhất không?
Chỉnh sửa: Tôi có bị ảnh hưởng bởi lỗi này không?
Chỉnh sửa: Đã sửa lỗi sử dụng thư viện Augeas theo đề xuất của Jeff Ferland và từ wiki Puppet .
Tôi đã tạo một sysctl
mô-đun ...
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"],
}
}
... và một mô-đun khác để đặt các cài đặt có liên quan ...
class prod_sysctl {
include sysctl
sysctl::conf {
# increase PID rollover value
"kernel.pid_max": value => "1048576";
}
}