Mike Reed
2014-Sep-02 19:20 UTC
[Puppet Users] custom facter fact not available from client
Hello all,
I'm attempting to create a custom fact to identify the network to which a
node belongs to. Below is the fact definition (I realize this fact isn't
complete but wanted to test what I have so far):
require 'facter'
Facter.add('network_geo') do
setcode do
hostname = Facter.value(:hostname)
hostname_array = hostname.split('-')
# debug info
puts "My network is #{hostname_array}"
end
end
I then added the fact into a module named sys_ident and more specifically,
into a directory like so: /modules/sys_ident/lib/facter/network_geo.rb
For debugging purposes, I created a quick init.pp for the sys_ident module
and added this:
class sys_ident {
notify{"My network identity is: ${network_geo}" :}
notify{"My hostname identity is: ${hostname}" :}
}
I then turned on pluginsync on both the puppetmaster and client within
puppet.conf.
After an initial run on my puppet client, I'm getting the following:
seanconnery-02:/$ sudo puppet agent -tv
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts in /var/lib/puppet/lib/facter/network_geo.rb
My network is ["seanconnery", "02"]
My network is ["seanconnery", "02"]
Info: Caching catalog for seanconnery-02.domain
Info: Applying configuration version '1409685071'
Notice: My network identity is:
Notice: /Stage[main]/Sys_ident/Notify[My network identity is: ]/message:
defined 'message' as 'My network identity is: '
Notice: My hostname identity is: seanconnery-02
Notice: /Stage[main]/Sys_ident/Notify[My hostname identity is:
seanconnery-02]/message: defined 'message' as 'My hostname identity
is:
seanconnery-02'
Notice: Finished catalog run in 0.04 seconds
As you can see from the output, I'm not receiving the expected output from
my "network_geo" notify parameter (also not sure why I'm getting
the "My
network" twice. If I run facter from the puppet client, I get nothing in
return:
seanconnery-02:/$ facter -p network_geo
For good measure, running the same command with the "hostname" fact
produces this:
seanconnery-02:/$ facter -p hostname
seanconnery-02
Based on the output from my client run, it does look like the fact is
making it to the client but I can't seem to actually invoke it.
I feel that things are generally in the right place and after considerable
troubleshooting, the only thing I can think of is a potential
order-of-operations problem.
Does anybody have any suggestions as to why this may be occurring?
Thank you in advance for your time and support and my apologies for the
extra-long post.
Cheers,
Mike
--
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+unsubscribe@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/puppet-users/024a85ed-fa17-4770-ba9c-2bcbff0c6b91%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.