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.

Reply via email to