sysctl.rb
module Puppet
newtype(:sysctl) do
@doc = "Manages kernel parameters in /etc/sysctl.conf"
ensurable
newparam(:name, :namevar => true) do
desc "Name of the parameter"
isnamevar
end
newproperty(:val) do
desc "Value the parameter should be set to"
end
newproperty(:target) do
desc "Name of the file to store parameters in"
defaultto { if @resource.class.defaultprovider.ancestors.include?(Puppet::Provider::ParsedFile)
@resource.class.defaultprovider.default_target
else
nil
end
}
end
end
end
parsed.rb
require 'puppet/provider/parsedfile'
conffile = "/tmp/sysctl.conf"
Puppet::Type.type(:sysctl).provide(:parsed,
:parent => Puppet::Provider::ParsedFile,
:default_target => conffile,
:filetype => :flat,
:rts => true
) do
text_line :comment, :match => /^#/;
text_line :blank, :match => /^\s*$/;
text_line :separator, :match => /\s*=\s*/;
record_line :parsed, :fields => %w{name val}
def self.to_line(record)
return super unless record[:record_type] == :parsed
puts "calling to_line"
str = "%s = %s" % [record[:name], record[:val]]
str
end
end