Greetings,

I am using ody/pkginventory [http://forge.puppetlabs.com/ody/pkginventory] as a 
way of getting information about what rpms are installed on a system. I am 
using this module over `puppet resource package` for two reasons: 1) Having it 
as a fact helps some of the other things we are doing and I don't know 
if-it's-possible/how to get the results of a `puppet resource package` as a 
fact and 2) I can't seem to figure out how to query the puppetmaster puppetdb 
(using curl) and pull back a full listing of installed packages on a node but I 
_can_ get the facts this way. 

We made a few small modifications to this package to add the Scientific and 
SLES OS's (which both OS's work just fine; just need to make the change in both 
pkg.rb files) and rolled out this module to our dev environment. That is when I 
noticed a "problem". I realize I can get the "kernel" fact, I am just using the 
"kernel" package as an example as it is reproducible on many systems. The 
information I am really after is other packages which have the same problem.

$ uname -r
2.6.32-431.1.2.el6.x86_64
$ facter -p | grep "pkg_kernel "
pkg_kernel => 2.6.32-358.el6
$ puppet resource package kernel
package { 'kernel':
  ensure => '2.6.32-358.el6',
}
$ rpm -qa | grep "^kernel-2"
kernel-2.6.32-358.el6.x86_64
kernel-2.6.32-431.1.2.el6.x86_64

The problem is that neither the resource nor the module are returning the 
actual running kernel. In reality, I would like to know every package. My 
co-worker (who is a bit more familiar with Ruby then I am) made the following 
changes to lib/facter/pkg.rb:

require 'facter/util/pkg'
counter_hash = {}
Facter::Util::Pkg.package_list.each do |key, value|
  if counter_hash[:"#{key}"].nil?
    counter_hash[:"#{key}"] = value
  else
    counter_hash[:"#{key}"] << ", #{value}"
  end
end
counter_hash.each do |key, value|
  Facter.add(:"pkg_#{key}") { setcode { value } } end


This produces an output of :
pkg_kernel => 2.6.32-358.el6, 2.6.32-431.1.2.el6

Much more desirable. 

So the question for this group is, before I roll this out to all my system does 
anyone have a better solution or suggestion on accomplishing this task?

What I have after my co-workers mod works, but I am really curious how/if 
others are retrieving a list of all packages installed on a system.

Thanks!

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/1570cc12-741a-40f3-bd3d-1cfbf5dbeb62%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to