นี่เป็นเรื่องง่ายในCFEngine ... แต่ตอนนี้ฉันอยู่ในสภาพแวดล้อมหุ่นกระบอกและต้องสามารถกำหนด / ทำให้แน่ใจ / ตรวจสอบตัวแปร sysctl.conf บางอย่างได้ ในโลก CFEngine ฉันสามารถตรวจสอบเฉพาะบรรทัดภายในไฟล์ปรับแต่ง ... ฉันได้พบการอ้างอิงเล็กน้อยถึงโมดูล sysctlใน Puppet wiki และโครงการใน 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";
}
}
เมื่อดูผ่านฟอรัมและรายชื่อผู้รับจดหมายดูเหมือนว่าจะมีความสับสนเกี่ยวกับความแตกต่างระหว่างปลั๊กอินและโมดูลหุ่นกระบอก คำศัพท์เกือบจะใช้แทนกันได้ ... ฉันต้องการเปิดใช้งานปลั๊กอินในไคลเอนต์ของฉันเพื่อที่จะได้รับข้อผิดพลาดบางอย่างในอดีต ฉันคิดว่านี่เป็นโมดูล!
ข้อผิดพลาดไคลเอ็นต์ปัจจุบัน:
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 แนะนำโดยเจฟฟ์ Ferland และจากวิกิพีเดียหุ่นกระบอก
ฉันสร้าง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";
}
}