My understanding is that there are a series of files that exist on the
server. Each contains information that is needed by various nodes. All
nodes need some of the files; but not all nodes need all of the files.

Based on what I think you are trying to get done, I would probably use
generate...

For example:

class squid {
     # Generate should return the results of the command...
     $file_content = generate
("cat","header","$hostname.file1","$hostname.file2","isp.
$isp","footer")

     file { "/path/to/squid_file":
          content => $file_content,
     }
}

You could set the ISP variable per node, or maybe create a new fact in
facter; depends on your setup really. To keep from constantly pushing
the configuration, you could look at an initialization file which can
be done a couple ways. The easiest would be to push a file that has
the date in it or something of that nature. Subscribe to that file so
that whenever it is updated, the squid file is also updated. So when
you make changes to the config files, you just update the date in your
init file.

Anyway, just a thought...


On Jul 3, 3:54 am, David Schmitt <da...@dasz.at> wrote:
> Paul Gear wrote:
> > David Schmitt wrote:
> >> ...
> >>> I'd rather not distribute the entire directory from the server, since it
> >>> contains custom content for each node.  Is there a way i can do this
> >>> with templates that include other files?  (Or templates that are plain
> >>> text rather than .erb?)  I'd really like to find a technique that
> >>> doesn't require separately copying the file fragments to the client 
> >>> also...
>
> >>> ...
> >> My approach in the CompleteConfiguration repos is to use the
> >> concatenated_file_part define to put file parts onto the client and then
> >> locally concatenated them all on the client with the concatenated_file
> >> define which does some shell magic internally.
>
> >> You seem to try to use a server side function ( file() ) to create a
> >> similar effect. You just have to be  aware that functions always run on
> >> the server.
>
> > I knew i must be overcomplicating it somehow.  :-)  So if i give the
> > file() function the full pathname of the directory on the server, i
> > should be able to achieve what i'm wanting without needing to distribute
> > a local copy of the files?
>
>  Fromhttp://reductivelabs.com/trac/puppet/wiki/FunctionReference#file:
>
> > Return the contents of a file. Multiple files can be passed, and the first 
> > file that exists will be read in.
>
> You probably should use template() (which concatenates its parameters;
> be aware of ERB expansion though) or create a local concat_file()
> function that works as intended or use generate() to call a server-side
> script.
>
> > Are there any drawbacks of doing this?  (Such as having to pull down the
> > content every time to check its MD5 sum, perhaps?)
>
> Exactly. content=> is compiled into the configuration which is sent to
> the client.
>
> Also, it is hard to add to these files from other clients, like with
> export/collect: you need a component on the puppetmaster and a third
> puppetd run.
>
> Regards, DavidS- Hide quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
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