[Puppet Users] Re: very odd Duplicate declaration problem.

2013-12-19 Thread Nathan Earixson
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.


[Puppet Users] Re: very odd Duplicate declaration problem.

2013-12-18 Thread jcbollinger


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/f5ad49c5-a8f0-49e9-852d-d38af59d2731%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.