On Tuesday, February 25, 2014 5:17:04 PM UTC-6, Tom Hanstra wrote:
>
> I have a puppet master which has over 50 puppet agents talking to it just 
> fine.  But I have one particular server on which the agent, after 
> connecting and exchanging keys, gives the following error:
>
> Error: Could not retrieve catalog from remote server: Error 400 on SERVER: 
> undefined method `empty?' for nil:NilClass at 
> /etc/puppet/modules/server/iptables/manifests/init.pp:7 on node 
> curatevanilla.library.nd.edu
> Warning: Not using cache on failed catalog
> Error: Could not retrieve catalog; skipping run
>
> Having read other posts, and knowing that we do use hiera, this looks like 
> a hiera problem.
>


That's a reasonable possibility, but it's by no means the only one.  All 
the error really tells you is that at some point during compilation of the 
affected node's catalog, Puppet is running into an uninitialized Puppet 
variable.

 

>  If I comment out classes which don't use hiera, the agent will run them 
> all.  But add any in which use hiera and that will be the class which fails 
> (iptables above is just the first one it hits).
>


So that does seem to tie the problem to hiera, but it's odd that it doesn't 
matter which hiera-using class you try to use.  That suggests a problem 
with your overall hiera configuration, rather than a problem with the data 
or any particular class.

 

>
> How do I best track down where the problem really is?  I have made sure 
> that the /etc/hiera.yaml file is in place and it matches other servers 
> which work.  I've tried clearing out /var/lib/puppet on the server and 
> letting that get rebuilt.  If I move /var/lib/hiera out of the way, it does 
> not get rebuilt, probably because the download does not get that far.  Any 
> suggestions on what might allow me to find the conflict. 
>
>
Have a look at your hiera.yaml, and carefully consider any variable 
interpolations in it.  When compiling a catalog for the affected node, are 
all those variables defined?  Such interpolations are usually based on node 
facts, but maybe your node is not providing one of the needed facts.

If that doesn't yield fruit, then create a separate node block just for the 
affected node, so that you can troubleshoot without affecting management of 
your other nodes.  Then use that node block to find a minimum set of 
classes that will trigger the error (perhaps just one).  Prefer simple 
classes for this purpose over more complex ones.  That should narrow the 
scope of the problem.  You can narrow it further by figuring out based on 
one or more failing classes the minimum it takes to build a class that will 
fail.

If you are still flummoxed after figuring out what minimum combination of 
declarations causes the failure then bring it back here.  We can probably 
help work out the specifics.


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/d16bffa1-9bbc-47ee-afb0-13ac5ee288b0%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to