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