aha. this was it. I had:
package { bind:
ensure = installed
}
OUTSIDE of the class site::dns_test { declaration. Thank you very much
for the help.
-n
On Wednesday, December 18, 2013 8:52:57 AM UTC-6, jcbollinger wrote:
On Tuesday, December 17, 2013 2:35:58 PM UTC-6, Nathan Earixson wrote:
puppet 3.3.2 on RHEL6
If I run puppet on a node:
# sudo puppet agent --test --noop
I get the following error:
*Error: Could not retrieve catalog from remote server: Error 400 on
SERVER: Duplicate declaration: Package[bind] is already declared in file
/etc/puppet/modules/site/manifests/dns_test.pp:4; cannot redeclare at
/etc/puppet/modules/site/manifests/dns.pp:4 on node
bushlnxadm01.chicagobooth.edu
http://bushlnxadm01.chicagobooth.eduWarning: Not using cache on failed
catalogError: Could not retrieve catalog; skipping run*
That's weird. That node isn't a DNS server and shouldn't even be thinking
about running bind.
If I open /etc/puppet/manifests/site.pp and save the file, the error goes
away on next puppet agent run.
After about 15 minutes the node starts trying to apply the classes from
*/etc/puppet/modules/site/manifests/dns_test.pp
*and after another 5 or so minutes I start getting the duplicate
declaration error again.
If I save the manifest the puppet agent command works as expected for
another 15 minutes or so.
I can't even begin to think of where to start looking on this. Any
thoughts would be appreciated.
This seems to be happening on every node.
Strange caching behavior sometimes results when you have declarations at
top level in a manifest other than site.pp or one directly or indirectly
'import'ed by site.pp. For instance,
module_path/my_module/manifests/init.pp:
class my_module {
# doesn't matter
}
# Oops:
include dns_test
# Also oops:
Class['dns'] - Class['my_module']
That sort of thing is very bad form because any declaration at top scope
(i.e. outside any class, node, or type definition) applies, in principle,
to all nodes, but manifests that are (only) autoloaded are may not actually
be evaluated for every node. The manifest author's intention is often that
the top-scope declaration apply only to nodes that declare the class or
type associated with the manifest, but that's not the actual semantics.
Behavior much like what you describe can result: everything works as
intended when the master first starts, but after a node checks in that
declares a certain class or type, nodes that subsequently check in get
cached top-scope declarations that were not intended for them.
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/c7906b74-3be2-443a-b11a-ac379b94f484%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.