The curl command, incidentally, returned nothing on the server, and errored on the client when typed in verbatim. And from the client, when I changed "localhost" to the name of the puppet master, I got a "curl (7): couldn't connect to host" error. I'll try Zach's tool next.
*Bret Wortman* http://about.me/wortmanbret On Thu, Nov 21, 2013 at 10:53 AM, Ken Barber <[email protected]> wrote: > > I'm trying my hand at my first exported resource. In fact, this comes > from > > converting an older resource to an exported one, which might explain the > > problem.... > > > > Currently, I have two classes: > > > > class yum { > > File <<| tag == 'repofile' |>> ~> Exec['yum clean all'] > > : > > } > > > > class yum::foo { > > include yum > > @@file { 'foo-yum': > > tag => 'repofile', > > path => '/etc/yum.repos.d/foo.repo', > > ensure => file, > > source => 'puppet:///modules/yum/foo.repo', > > } > > } > > > > When I try to run this by including yum::foo in a class, I get this > error: > > > > Error: Could not retrieve catalog from remote server: Error 400 on > SERVER: > > Another local or imported resource exists with the type and title > > File[foo-repofile] on node osem2.foo.net > > Warning: Not using cache on failed catalog > > Error: Could not retrieve catalog; skipping run > > # > > > > So I go looking for anything containing foo-repofile: > > > > # cd /etc/puppet/modules && find . -type f | xargs grep foo-repofile > > # > > > > ORIGINALLY, this resource was called foo-repofile, but at that time, it > was > > in a different module and wasn't exported. How can I purge that from > > PuppetDB so it gets over it and lets me use this new one? Or is the the > > problem somewhere or something else? > > So this is a duplicate exported resource. Something in your content > has created this scenario at some time, and its usually either a) > genuine, you really have exported the same type/title combination > twice from two nodes, and are now collecting it onto one, a constraint > violation or b) an old node has exported this in the past, and that > node has not been deactivated. > > The trick is to figure out how to debug these issues, since they are > often quite solveable. > > Zach Smith has created a tool for analyzing what has been exported to > PuppetDB: http://forge.puppetlabs.com/zack/exports and this is a great > start. > > You can also query this manually yourself: > > $ curl 'http://localhost:8080/v3/resources?query=\["=","exported",true\]' > > In general, the trick to avoid this error is to make sure the types > you export can never collide. In your code: > > @@file { 'foo-yum': > path => '/etc/yum.repos.d/foo.repo', > } > > ... you are exporting something with a very fixed title and namevar > (foo-yum and path respectively) ... basically if two nodes export > this, you will always get a collision on the collecting host, so the > pattern you have will only work if there is 1 export, or if you pin > the collection query to the node that exported it. > > To be honest though - exported resources might not be appropriate for > this yum repo use case anyway, although perhaps I don't see it :-). > Can you explain why you are trying to use exported resources for this > purpose? > > ken. > > -- > You received this message because you are subscribed to a topic in the > Google Groups "Puppet Users" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/puppet-users/zNFaLT3tf3Q/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/puppet-users/CAE4bNTmXwwyYwBG6aR9cNc%2BjS_MzLvoaeBaOSPT5XhCkwSQxFw%40mail.gmail.com > . > For more options, visit https://groups.google.com/groups/opt_out. > -- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/CAN9oxgStxTjcA6ef7cq%2BCwouXFpso5hCgKkOWDq44qiHRnZK2A%40mail.gmail.com. For more options, visit https://groups.google.com/groups/opt_out.
