On Sunday, February 8, 2015 at 3:47:58 PM UTC-6, John D'Ausilio wrote:
>
> So I have a custom fact which works fine from the commandline: facter 
> last_interface  (it returns the ip address of the last of a sorted list of 
> interface names)
>
> If I just run facter without parameters, the value in last_interface is 
> incorrect!
>
> Is there something different between the environment when running facter 
> without args and the environment when asking for a specific fact?
>
> Facter.add('last_interface') do
>   setcode do
>     name = Facter::Core::Execution.exec('ip -o l | grep -v loopback | perl 
> -lane\'$F[1]=~s/://g;print $F[1]\' | sort -n | tail -1')
>     Facter.value("ipaddress_"+name)
>   end
> end
>
>

No. The environment provided to Facter (or to any command) is determined by 
how you launch the command.  The arguments to the command cannot affect its 
environment.

We might be able to offer better insight if you explained what fact value 
you expect, and why, and what you actually see in the incorrect case.

I will say right now, however, that it is awfully strange and heavyweight 
to use Perl as part of determining the fact value when the fact computation 
is already running in Ruby.  Even if you want to do the whole job with an 
external pipeline, 'sed' would be a lighter-weight (and simple-syntax) 
choice.  Nevertheless, I don't see how that could contribute to differing 
results.


John

-- 
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/f0aa94a6-aa55-4420-97f0-1f82c55c6207%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to