Actually I found if I created a resource between path and file called 
element, I could give it a unique name.  Then inside the body I could check 
to see if the File is declared, if not I could declare it.  

On Thursday, April 4, 2013 9:23:54 AM UTC-7, Mike Power wrote:
>
> Puppet right now requires every element of a path to have an individual 
> file definition.  This makes it had to take an arbitrary path as a 
> parameter.  You are forced to require your client to make the entire path 
> structure for you or instead you use an exec resource and call mkdir -p.  
> Using an exec resource does not generate an File resources so autorequire 
> does not work.
>
> I didn't like this, I wanted to be able to once specify a path and have 
> puppet do that autorequire as needed.
>
> Something like:
>     path {"/blah/blah/blah/and/blah":
>     }
>
>
> In order to make this happen I would have to manually define each file:
>     file {"/blah/":
>         ensure      => directory,
>     }
>
>     file {"/blah/blah/":
>         ensure      => directory,
>     }
>
>     file {"/blah/blah/blah/":
>         ensure      => directory,
>     }
>
>     file {"/blah/blah/blah/and/":
>         ensure      => directory,
>     }
>
>     file {"/blah/blah/blah/and/blah/":
>         ensure      => directory,
>     }
>
> Of course there is a short hand for this:
>     file {["/blah/", "/blah/blah/", "/blah/blah/blah/", 
> "/blah/blah/blah/and/","/blah/blah/blah/and/blah/"]:
>         ensure      => directory,
>     }
>
> Then it occurred to me I could parse the path and produce the array of 
> elements needed.  Something like:
>     $path = "/blah/blah/blah/and/blah"
>     $file_list = split($path, $file_separator)
>     $paths = inline_template('<% parent = nil %><%=@file_list.collect{ 
> |file| parent.nil? ? parent = "#{@file_separator}":parent = 
> "#{parent}#{file}#{@file_separator}"}.join(@path_separator) %>')
>     $path_list = split($paths, $path_separator)
>     file{$path_list:
>         ensure      => directory,
>     }
>
> This works great.... once.  Then you get errors like:
>     Error: Duplicate declaration: File[/]
>
> If there anyway to trim down the produced array by removing the resources 
> that already exist?
>
>
>
>
>
>
>
>

-- 
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 post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/puppet-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to