RijilV wrote:
> Yeah, this is an old and know issue (unfortunately).
>
> Original bug report:
> http://projects.reductivelabs.com/issues/86
>
>
> You can work around it with a hackish exec:
>
> exec { "mkdir -p /usr/share/openvpn/easy-rsa/2.0/keys": }
>
> then tack that exec as a require to your file "/usr/share/openvpn/easy-rsa/
> 2.0/keys":
Inspired by this discussion, I just wrote a custom function that
could help in doing this, which I have attached. You would then
use it like this:
$x = dirtree("/usr/share/openvpn", "easy-rsa/2.0/keys")
file {
$x: ensure => directory;
}
dirtree() will return a list of all directories from /usr/share/openvpn
down to /usr/share/openvpn/easy-rsa/foo/bar. Passing that list to the
file type will make sure those exists. But, unlike using mkdir -p, it
will *not* create /usr or /usr/share, only /usr/share/openvpn and down.
Unfortunately, it seems that I need to assign the function return value
to a temporary variable ($x above). I would have liked to do
file {
dirtree("/usr/share/openvpn", "easy-rsa/2.0/keys"):
ensure => directory;
}
but at least the pre 0.25.0 snapshot I'm testing this with gives me
a syntax error for that. :-( I'll file a bug report for that.
/Bellman
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en
-~----------~----~----~----~------~----~------~--~---
module Puppet::Parser::Functions
newfunction(:dirtree, :type => :rvalue, :doc => "\
Generate a list of pathnames. Bla, bla, bla.
") \
do |args|
if args.length != 2
self.fail("dirtree(): wrong number of arguments" +
" (#{args.length} for 2)")
end
topdir = args[0]
subbottom = args[1]
subdirs = []
while subbottom != "."
subbottom, component = File.split(subbottom)
subdirs.unshift(component)
end
dir = topdir
paths = [ dir ]
while subdirs.length > 0
component = subdirs.shift()
dir = File.join(dir, component)
paths.push(dir)
end
return paths
end
end