FAQ
Hello,

Like many others, I once again had to deal with creation of deep directory
trees with puppet. I did the usual:

file { [ "/a", "/a/b/", "/a/b/c"...]:
ensure => directory
}

And again got sick of it. I still didn't find a good answer for it on the
web so here is what I came up with in a moment of despair:

define core::mkdirp($owner = undef, $group = undef) {
exec { "mkdir -p ${name}":
creates => $name,
}

file { $name:
ensure => 'directory',
require => Exec["mkdir -p ${name}"],
owner => $owner,
group => $group,
}
}

Usage:

core::mkdirp { "/a/b/c/d":
owner => $user,
group => $group,
}

file { "/a/b/c/d/file.txt":
require => Core::Mkdirp["/a/b/c/d"],
...
}

So far it works beautifully for me but I want to hear what the community
thinks of it and whether there is a nicer solution I'm missing.

Thanks.

--Amos

--
You received this message because you are subscribed to the Google Groups "Puppet Users" group.
To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/ozFNn2oUGCQJ.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.

Search Discussions

  • Christopher Wood at Apr 26, 2012 at 1:47 pm
    I hope you have more moments of despair because that's nifty and I'll use it.

    You could possibly use ruby's dirname and basename (http://ruby-doc.org/core-1.8.7/File.html) inside an inline template to do the directory/file split for you in a single resource. The parameters for permissions and ownership for file vs directory might get messy, though.
    On Thu, Apr 26, 2012 at 12:55:59AM -0700, Amos Shapira wrote:
    Hello,

    Like many others, I once again had to deal with creation of deep directory
    trees with puppet. I did the usual:
    file { [ "/a", "/a/b/", "/a/b/c"...]:
    ensure => directory
    }
    And again got sick of it. I still didn't find a good answer for it on the
    web so here is what I came up with in a moment of despair:

    define core::mkdirp($owner = undef, $group = undef) {
    exec { "mkdir -p ${name}":
    creates => $name,
    }

    file { $name:
    ensure => 'directory',
    require => Exec["mkdir -p ${name}"],
    owner => $owner,
    group => $group,
    }
    }

    Usage:

    core::mkdirp { "/a/b/c/d":
    owner => $user,
    group => $group,
    }

    file { "/a/b/c/d/file.txt":
    require => Core::Mkdirp["/a/b/c/d"],
    ...
    }

    So far it works beautifully for me but I want to hear what the community
    thinks of it and whether there is a nicer solution I'm missing.

    Thanks.

    --Amos

    --
    You received this message because you are subscribed to the Google Groups
    "Puppet Users" group.
    To view this discussion on the web visit
    [1]https://groups.google.com/d/msg/puppet-users/-/ozFNn2oUGCQJ.
    To post to this group, send email to puppet-users@googlegroups.com.
    To unsubscribe from this group, send email to
    puppet-users+unsubscribe@googlegroups.com.
    For more options, visit this group at
    http://groups.google.com/group/puppet-users?hl=en.

    References

    Visible links
    1. https://groups.google.com/d/msg/puppet-users/-/ozFNn2oUGCQJ
    --
    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+unsubscribe@googlegroups.com.
    For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouppuppet-users @
categoriespuppet
postedApr 26, '12 at 7:56a
activeApr 26, '12 at 1:47p
posts2
users2
websitepuppetlabs.com

2 users in discussion

Amos Shapira: 1 post Christopher Wood: 1 post

People

Translate

site design / logo © 2022 Grokbase