Nevermind, I found it: http://projects.puppetlabs.com/projects/puppet/wiki/Generating_a_config_file_from_fragments
On Aug 23, 9:21 am, jcbollinger <john.bollin...@stjude.org> wrote: > On Aug 22, 8:11 am, puppetlurker <under.my.cont...@gmail.com> wrote: > > > > > > > > > > > Greetings, > > > I'm having an issue with my implementation of exported resources. I > > have a memcache server pool, and want to update the /etc/php.d/ > > memcache.ini with the ips of all the servers. Previously, I hard coded > > the $memcacheservers array in the node manifest and the template > > collected and populated the template. > > > Now that I'm moving to exported resouces, how do I get it to set an > > array in a way I can access it from a different scope? I tried moving > > the file { "/etc/php.d/memcache.ini": content => template(memcache/ > > memcache.ini.erb) to the resource function (I understand exported > > resources shoulld not define other resources), but it only populates > > the first server collected, and complains about a duplicate resource > > if I have more than 1 exported server. > > > I've tried defining the resource without the content the first time, > > then override the define with the content, but that only picks up the > > 2nd server. I've tried accessing the variable that gets populated > > after the Memcache::Servers <<| |>> but it doesn't get populated in > > this scope. I've tried looking up the > > scope.lookupvar('memcached::servers::memcacheservers') but the > > exported resource is a define not a class and I couldn't get it to > > work. I've tried just using a script to populate the file with the > > proper contents, but there is no way to ensure it is filled with all > > the servers, for example the script is executed out of order, > > replaced 3 times if there are 3 servers, and may contain 1, 2, or 3 > > servers after a puppet run. > > > Any suggestions? > > The way to do this with exported resources is for each node to export > a resource containing its own information only. The trick is choosing > the resource to use for this. > > The simplest case would be if "/etc/php.d/memcache.ini" supports some > kind of 'include' directive, especially if it understands globs. Then > each server can export its own (distinctly-named) file intended for > inclusion, and the node(s) that collect them need only to put the > appropriate 'include' directive(s) into the main memcache.ini. > > Alternatively, there is a module available that provides for building > files from fragments. Your server could export fragment resources of > the type defined by that module, and the node(s) that collect them > would use them to build the memcache.ini file. > > Remember: an exported resource is one that you make available for > other nodes to include in their catalogs, as if they were declared in > those nodes' own manifests. All the normal rules apply in the context > where they are collected. In particular, name and title uniqueness is > still required, but for exported resources you may get lost resource > data instead of Puppet errors when there are name collisions. > > John -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.