Hi,

we use a custom fact, that gives us the loaded puppet moduels and loaded 
puppet classes. With Debian Bookworm it breaks:

Notice: /File[/var/cache/puppet/lib/facter/classes.rb]/content: content 
changed 
'{sha256}ca4b2b426bf27e0176a993ce39c7c64796996c90430a8712da30514fb914aea8' 
to 
'{sha256}b3540b60fd4cf67d7d4aeb762d0c7709d135eed82ad01cf13a2b8b28947a66e7'
Info: Loading facts
Error: Facter: --puppet_vardir-- not implemented but required 
with params: [] 
with block: nil  
called by:  
["/var/cache/puppet/lib/facter/classes.rb:7:in `<top (required)>'", 
"/usr/lib/ruby/vendor_ruby/facter/custom_facts/util/loader.rb:115:in 
`load'", 
"/usr/lib/ruby/vendor_ruby/facter/custom_facts/util/loader.rb:115:in 
`kernel_load'", 
"/usr/lib/ruby/vendor_ruby/facter/custom_facts/util/loader.rb:98:in 
`load_file'", 
"/usr/lib/ruby/vendor_ruby/facter/custom_facts/util/loader.rb:47:in `block 
(2 levels) in load_all'", 
"/usr/lib/ruby/vendor_ruby/facter/custom_facts/util/loader.rb:45:in 
`each'", 
"/usr/lib/ruby/vendor_ruby/facter/custom_facts/util/loader.rb:45:in `block 
in load_all'", 
"/usr/lib/ruby/vendor_ruby/facter/custom_facts/util/loader.rb:41:in 
`each'", 
"/usr/lib/ruby/vendor_ruby/facter/custom_facts/util/loader.rb:41:in 
`load_all'", 
"/usr/lib/ruby/vendor_ruby/facter/custom_facts/util/collection.rb:118:in 
`custom_facts'", 
"/usr/lib/ruby/vendor_ruby/facter/framework/core/fact_loaders/external_fact_loader.rb:20:in
 
`load_custom_facts'", 
"/usr/lib/ruby/vendor_ruby/facter/framework/core/fact_loaders/external_fact_loader.rb:6:in
 
`custom_facts'", 
"/usr/lib/ruby/vendor_ruby/facter/framework/core/fact_loaders/fact_loader.rb:56:in
 
`load_custom_facts'", 
"/usr/lib/ruby/vendor_ruby/facter/framework/core/fact_loaders/fact_loader.rb:23:in
 
`load'", 
"/usr/lib/ruby/vendor_ruby/facter/framework/core/fact_manager.rb:20:in 
`resolve_facts'", "/usr/lib/ruby/vendor_ruby/facter.rb:380:in `to_hash'", 
"/usr/lib/ruby/vendor_ruby/puppet/facter_impl.rb:25:in `to_hash'", 
"/usr/lib/ruby/vendor_ruby/puppet/indirector/facts/facter.rb:40:in `find'", 
"/usr/lib/ruby/vendor_ruby/puppet/indirector/indirection.rb:223:in `find'", 
"/usr/lib/ruby/vendor_ruby/puppet/configurer/fact_handler.rb:15:in 
`find_facts'", "/usr/lib/ruby/vendor_ruby/puppet/configurer.rb:241:in 
`block in get_facts'", "/usr/lib/ruby/vendor_ruby/puppet/util.rb:567:in 
`block in thinmark'", "/usr/lib/ruby/3.1.0/benchmark.rb:311:in `realtime'", 
"/usr/lib/ruby/vendor_ruby/puppet/util.rb:566:in `thinmark'", 
"/usr/lib/ruby/vendor_ruby/puppet/configurer.rb:240:in `get_facts'", 
"/usr/lib/ruby/vendor_ruby/puppet/configurer.rb:423:in `run_internal'", 
"/usr/lib/ruby/vendor_ruby/puppet/configurer.rb:339:in `run'", 
"/usr/lib/ruby/vendor_ruby/puppet/agent.rb:83:in `block (6 levels) in 
run'", "/usr/lib/ruby/vendor_ruby/puppet/context.rb:62:in `override'", 
"/usr/lib/ruby/vendor_ruby/puppet.rb:289:in `override'", 
"/usr/lib/ruby/vendor_ruby/puppet/agent.rb:82:in `block (5 levels) in 
run'", "/usr/lib/ruby/3.1.0/timeout.rb:107:in `block in timeout'", 
"/usr/lib/ruby/3.1.0/timeout.rb:117:in `timeout'", 
"/usr/lib/ruby/vendor_ruby/puppet/agent.rb:81:in `block (4 levels) in 
run'", "/usr/lib/ruby/vendor_ruby/puppet/agent/locker.rb:21:in `lock'", 
"/usr/lib/ruby/vendor_ruby/puppet/agent.rb:71:in `block (3 levels) in 
run'", "/usr/lib/ruby/vendor_ruby/puppet/agent.rb:162:in `with_client'", 
"/usr/lib/ruby/vendor_ruby/puppet/agent.rb:67:in `block (2 levels) in 
run'", "/usr/lib/ruby/vendor_ruby/puppet/agent.rb:127:in `run_in_fork'", 
"/usr/lib/ruby/vendor_ruby/puppet/agent.rb:66:in `block in run'", 
"/usr/lib/ruby/vendor_ruby/puppet/application.rb:172:in `controlled_run'", 
"/usr/lib/ruby/vendor_ruby/puppet/agent.rb:47:in `run'", 
"/usr/lib/ruby/vendor_ruby/puppet/application/agent.rb:433:in `onetime'", 
"/usr/lib/ruby/vendor_ruby/puppet/application/agent.rb:393:in `block in 
run_command'", "/usr/lib/ruby/vendor_ruby/puppet/context.rb:62:in 
`override'", "/usr/lib/ruby/vendor_ruby/puppet.rb:289:in `override'", 
"/usr/lib/ruby/vendor_ruby/puppet/application/agent.rb:390:in 
`run_command'", "/usr/lib/ruby/vendor_ruby/puppet/application.rb:421:in 
`block in run'", "/usr/lib/ruby/vendor_ruby/puppet/util.rb:756:in 
`exit_on_fail'", "/usr/lib/ruby/vendor_ruby/puppet/application.rb:421:in 
`run'", "/usr/lib/ruby/vendor_ruby/puppet/util/command_line.rb:143:in 
`run'", "/usr/lib/ruby/vendor_ruby/puppet/util/command_line.rb:77:in 
`execute'", "/usr/bin/puppet:5:in `<main>'"] 


The line, where it breaks is:

Facter.puppet_vardir

can someone give me a hint, how we can solve it ?

the full fact is:

#!/usr/bin/env ruby
# Puppet classes and modules as facts
# Source: modules/custom/lib/facter/classes.rb

require 'facter'
begin
  Facter.puppet_vardir
rescue
  Facter.loadfacts()
end

vardir=Facter.value("puppet_vardir")
statedir="#{vardir}/state"
classes_file="#{statedir}/classes.txt"

if File.exists?(classes_file)
  #File exists, load it.
  f=File.open(classes_file, 'r')
  classes_hash  = {}
  modules_array = []
  File.foreach(classes_file) do |l|
    modules_array << l.chomp.gsub(/::.*/, '')
  end

  modules_array = modules_array.sort.uniq
  modules_array.each do |i|
    classes_array = []
    classes_array << i
    File.foreach(classes_file) do |l|
      classes_array << l.chomp if l =~ /^#{i}/
      classes_array = classes_array.sort.uniq
    end
    classes_hash[i] = classes_array
  end
  
  Facter.add(:puppet_modules) do
    confine :kernel => 'Linux'
    setcode do
      modules_array.sort.uniq.join(', ').to_s
    end
  end
  Facter.add(:puppet_classes) do
    confine :kernel => 'Linux'
    setcode do
      classes_hash.map { |_k, v| v }.sort.uniq.join(', ').to_s
    end
  end
end


cu denny

-- 
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/4cd5ad31-ef7e-4cd4-a838-4600f3f6d43cn%40googlegroups.com.

Reply via email to