I'm not sure why this is. Is there any reason why the Puppet Master can't retrieve these facts? Is this an issue that the Puppet Agent isn't providing these facts to the Puppet Master or that the Puppet Master itself can't fetch them?

It seems that the warnings are generated from here in the Puppet::Resource::Catalog::Compiler.set_server_facts method. I'm not sure why it can't get the facts, as I can get them both from irb and from the facter command-line tool.

I can get both facts using the facter command-line tool on the machine and both work just fine.

3 Answers

If I understand this correctly the puppet master tries to mix in some server side facts to the facts provided by your agent, so you can e.g. access the masters fqdn as $servername in your manifests (see docs)

So can you please run facter fqdn ipaddress on your puppet master?

Update:
For some facts facter relies on the $PATH variable. Example: To determine the hostname, the hostname fact runs Facter::Core::Execution.execute('hostname') and will in turn try to find the executable in one of the $PATH directories. Now in your case the $PATH variable seems to be :/usr/sbin:/sbin (which puppet mixes in as default) but I am missing /bin and /usr/bin here.

Is this intentional that users other than root (or the puppet user in particular) have an empty $PATH variable? If this is by design, you should add the path setting in your config.

Comments

Facter, both from `irb` and from the command-line `facter` tool works great on the Puppet Master machine. Moreover, the Puppet Master doesn't output these errors when running in standalone WEBrick mode; I only see this error when running Puppet Master in Passenger with `--rack`.