Wait -- so this collects every occurrence thoughout the database, not just for the system being processed? I think the word "node" was tripping me up in the online documentation -- I was reading "node" and thinking "resource". Okay, I get it now, and you're absolutely right -- this is a terrible use of exported resources. I think what I was looking for was virtual, not exported, resources.
*Bret Wortman* http://about.me/wortmanbret On Thu, Nov 21, 2013 at 11:15 AM, Bret Wortman <[email protected]> wrote: > 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/CAN9oxgRFQYL5eOs8XE%2BMBmjje0mv7%3DJgJJBACipwarA%3Dk4y2%3Dg%40mail.gmail.com. For more options, visit https://groups.google.com/groups/opt_out.
