I have the same issue, I basically create an array, that way it cuts it
down to one FILE, and not the same thing over and over again.
file { ["/blah", "/blah/blah", "/blah/blah/blah", "/blah/blah/blah/blah",
"/blah/blah/blah/blah/blah"]:
ensure => directory,
owner => "blah",
group => "blah",
mode => 0700,
}
On Monday, April 8, 2013 1:27:11 PM UTC-7, Luca Gioppo wrote:
>
> Can you post a complete example please?
> Thanks
> Luca
>
>
> 2013/4/4 Mike Power <[email protected] <javascript:>>
>
>> 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] <javascript:>.
>> To post to this group, send email to [email protected]<javascript:>
>> .
>> Visit this group at http://groups.google.com/group/puppet-users?hl=en.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>>
>
>
--
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.