On Thursday, July 6, 2017 at 4:45:53 PM UTC-5, buoyant_puppy wrote:
>
> Excuse my newbieness, but I'm having a basic misunderstanding regarding 
> loops.
>
> Say I have: joesfriends = jack, sam, sally
>
> I need to add each entry into a file - one per line.
>
> $joesfriends.each | String $joesfriends| {    # loop
>
>   file { "/etc/list_of_joes_friends":    
>
>     line => "${joesfriends}"
>
>   }
>
> }
>
>
>
> This fails on a duplicate declaration error....but how can there not be a 
> duplicate, it's a loop? The examples in the docs avoid this particular 
> situation by using the var in the filename, but that's not usually going to 
> be an option.
>


You have it backwards.  If you're trying to declare a single resource then 
it's the (Puppet) loop that's not an option.

No resource can be declared more than once.  You can, however, declare 
*distinct* resources in various iterations of a loop -- for example, 
resources representing different parts of the same file -- or you can 
construct resource properties via an iterative process in a template or 
custom function.

It's not clear exactly what you mean to do because the File resource type 
does not have a "line" property.  If you mean to describe the complete 
contents of a single file then you are looking for a way to construct a 
value for the 'content' property of one File resource.  I'd recommend a 
template <https://docs.puppet.com/puppet/4.10/lang_template.html> for that 
purpose.  Puppet 4 has two flavors to choose from, ERB and EPP, either one 
of which would support building the file content by iterating over the 
elements of an array.


John

-- 
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 puppet-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/16b621db-af5e-47fb-aaba-b19e7d7a4f60%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to