Thanks for the reply!!  One more thing I can't quite figure out:  How to get
a new entry in my target file!  I can parse, but an entry in manifests
doesn't magically appear.  Do I need to add something to my provider or type
to get that to happen?  Any help would be soooo appreciated; i'm getting
tired of struggling with this!

vncserver/manifests/init.pp
class vncserver {
  vncserver { 'guymatz':
      port => '92',
      geometry => '1024x768',
      ensure => 'present'
  }
} # class vncserver


vncserver/lib/puppet/type/vncserver.rb
require 'puppet/property/list'
require 'puppet/provider/parsedfile'

Puppet::Type.newtype(:vncserver) do

    ensurable

    newparam(:port) do
      desc "The vnc servers port assignment.  Will be +5900 on the server"
    end

    newparam(:name) do
      isnamevar
      desc "The user who will own the VNC session."
    end

    newparam(:geometry) do
      desc "Resolution for VNC, in XxY, e.g. 1024x768."
    end

    newparam(:password) do
      desc "Password to be put into users .vnc/passwd."
    end

    newparam(:args) do
      desc "Optional arguments to be added to the vncserver command-line."
    end

    @doc = "Installs and manages entries for vncservers.  For Redhat-bases
      systems, and likely many others, these entries will be in
      /etc/sysconfig/vncservers."

end


and, finally, my very unfinished provider:
vncserver/lib/puppet/provider/vncserver/parsed.rb:
require 'puppet/provider/parsedfile'

vncservers = "/etc/sysconfig/vncservers"

Puppet::Type.type(:vncserver).provide(:parsed,
                                      :parent =>
Puppet::Provider::ParsedFile,
                                      :default_target => vncservers,
                                      :filetype => :flat
                                      ) do
  desc "The vncserver provider that uses the ParsedFile class"
  confine :exists => vncservers
  text_line :comment, :match => /^\s*#/;
  text_line :blank, :match => /^\s*$/;

  record_line :parsed,
              :joiner => '',
              :fields => %w{port geometry optional_args},
              :optional => %w{port geometry },
              :match => /^VNCSERVERARGS\[(\d+)\]="-geometry (\d+x\d+)(.*)$/,
              :to_line => proc { |record|
                "VNCSERVERARGS[#{record[:port]}]=\"-geometry
#{record[:geometry]} #{record[:optional_args]}\""
              }

  record_line :parsed_again,
              :joiner => '',
              :fields => %w{port_name},
              :optional => %w{port_name},
              :match => /^VNCSERVERS="(.*)"$/,
              :to_line => proc { |record|
                "VNCSERVERS=\"#{record[:port_name]}\""
              }
end

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to