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 puppet-users+unsubscr...@googlegroups.com.
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