FAQ
I want to recursively descend infinitely through a directory tree in
regards to ensuring:

   (a) owner, group, permission
   (b) existence of the full path, all the leaves, out to the final leaf,
e.g.
        /somedir/somesubdir/{file1,file2,file3,somesubdirtoo} and so forth

This could be done trivially with an exec but is not pure-Puppet-ecosystem,
obviously.

So my questions are, from a Puppet-puritan-perspective:

   is there a way to do (a)
   is there a way to do (b)
   is there a way to do (a)+(b)

and last:

   is there a way to do (a)+(b) in a reasonable period of time for a shallow
tree of few leaves

Yours in squirrelhood,

Stuart


--
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+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/b9c95f80-9ae3-439b-a451-17327291524d%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Search Discussions

  • Stuart Cracraft at Dec 11, 2013 at 10:36 pm
    The tree has to already exist.

    One would think having the ability
    to instantiate a tree from a seedling would be useful.

    Sent from my iPhone
    On Dec 11, 2013, at 2:25 PM, Stuart Cracraft wrote:


    I want to recursively descend infinitely through a directory tree in regards to ensuring:

    (a) owner, group, permission
    (b) existence of the full path, all the leaves, out to the final leaf, e.g.
    /somedir/somesubdir/{file1,file2,file3,somesubdirtoo} and so forth

    This could be done trivially with an exec but is not pure-Puppet-ecosystem, obviously.

    So my questions are, from a Puppet-puritan-perspective:

    is there a way to do (a)
    is there a way to do (b)
    is there a way to do (a)+(b)

    and last:

    is there a way to do (a)+(b) in a reasonable period of time for a shallow tree of few leaves

    Yours in squirrelhood,

    Stuart


    --
    You received this message because you are subscribed to a topic in the Google Groups "Puppet Users" group.
    To unsubscribe from this topic, visit https://groups.google.com/d/topic/puppet-users/Hf6ReeSy2mE/unsubscribe.
    To unsubscribe from this group and all its topics, send an email to puppet-users+unsubscribe@googlegroups.com.
    To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/b9c95f80-9ae3-439b-a451-17327291524d%40googlegroups.com.
    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 puppet-users+unsubscribe@googlegroups.com.
    To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/5B231871-F82E-4DBA-9562-1F93B486A6DA%40me.com.
    For more options, visit https://groups.google.com/groups/opt_out.
  • Stuart Cracraft at Dec 11, 2013 at 10:38 pm
    http://christian.hofstaedtler.name/blog/2008/11/puppet-managing-directories-recursively.html
    On Wednesday, December 11, 2013 2:36:05 PM UTC-8, Stuart Cracraft wrote:

    The tree has to already exist.

    One would think having the ability
    to instantiate a tree from a seedling would be useful.

    Sent from my iPhone

    On Dec 11, 2013, at 2:25 PM, Stuart Cracraft wrote:


    I want to recursively descend infinitely through a directory tree in
    regards to ensuring:

    (a) owner, group, permission
    (b) existence of the full path, all the leaves, out to the final leaf,
    e.g.
    /somedir/somesubdir/{file1,file2,file3,somesubdirtoo} and so forth

    This could be done trivially with an exec but is not
    pure-Puppet-ecosystem, obviously.

    So my questions are, from a Puppet-puritan-perspective:

    is there a way to do (a)
    is there a way to do (b)
    is there a way to do (a)+(b)

    and last:

    is there a way to do (a)+(b) in a reasonable period of time for a
    shallow tree of few leaves

    Yours in squirrelhood,

    Stuart


    --
    You received this message because you are subscribed to a topic in the
    Google Groups "Puppet Users" group.
    To unsubscribe from this topic, visit
    https://groups.google.com/d/topic/puppet-users/Hf6ReeSy2mE/unsubscribe.
    To unsubscribe from this group and all its topics, send an email to
    puppet-users+unsubscribe@googlegroups.com.
    To view this discussion on the web visit
    https://groups.google.com/d/msgid/puppet-users/b9c95f80-9ae3-439b-a451-17327291524d%40googlegroups.com
    .
    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 puppet-users+unsubscribe@googlegroups.com.
    To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/a0f42acd-6ac7-497f-a218-24c91cc397a5%40googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.
  • Jcbollinger at Dec 12, 2013 at 3:17 pm

    On Wednesday, December 11, 2013 4:38:02 PM UTC-6, Stuart Cracraft wrote:

    http://christian.hofstaedtler.name/blog/2008/11/puppet-managing-directories-recursively.html
    Yes. Do you still have a question here, or does that blog post answer the
    question sufficiently for you?


    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+unsubscribe@googlegroups.com.
    To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/fd378100-96aa-4fa6-8caf-54919a0f40e1%40googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.
  • Stuart Cracraft at Dec 12, 2013 at 6:57 pm
    Sure does John.

    Thanks for your interest!

    Do we know when the Puppet 3.0 book is coming out?

    It's showing as a very, very long delay at Amazon...
    On Thursday, December 12, 2013 7:17:17 AM UTC-8, jcbollinger wrote:


    On Wednesday, December 11, 2013 4:38:02 PM UTC-6, Stuart Cracraft wrote:


    http://christian.hofstaedtler.name/blog/2008/11/puppet-managing-directories-recursively.html
    Yes. Do you still have a question here, or does that blog post answer the
    question sufficiently for you?


    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+unsubscribe@googlegroups.com.
    To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/2bf056f0-cf06-482f-becc-86465530bf3e%40googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.
  • Andy Spiegl at Dec 17, 2013 at 7:12 pm
    I thought I had understood recursive directory management. It worked
    fine until I switched to puppet v3 (Debian 3.3.2-1puppetla to be exact)
    Since then, files in subdirs aren't copied anymore.

    An example:
       File {
         owner => "nagios",
         group => "nagios",
         mode => '0644',
       }
       file { '/var/lib/nagios':
      ensure => directory,
         source => 'puppet:///modules/nagios/var_lib_nagios',
      recurse => true,
       }
       file { '/var/lib/nagios/plugins':
      ensure => directory,
      recurse => true,
      mode => '0775',
       }
       file { '/var/lib/nagios/bin':
      ensure => directory,
      recurse => true,
      mode => '0775',
       }

      lama:~/.../puppet/modules/nagios> ls -la files/var_lib_nagios
      total 8
      drwxrwxr-x 2 andy users 4096 2013-11-15 15:56:23 bin/
      drwxrwxr-x 2 andy users 4096 2013-11-25 12:01:14 plugins/

    Why aren't these directories copied to /var/lib/nagios?
    I tried setting recurselimit to '2' but that didn't help either.

    Thanks for any hint!
      Andy.


    --
      A mathematician is a machine for converting coffee into theorems. (Alfred Renyi)

    --
    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+unsubscribe@googlegroups.com.
    To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/20131217191221.GA31279%40spiegl.de.
    For more options, visit https://groups.google.com/groups/opt_out.
  • Ben Ford at Dec 18, 2013 at 12:31 am
    If you override something in a recursive directory, you're overriding
    everything. The subdirectories are being managed explicitly by the resource
    managing them, not by a combination of it and the parent. Look inline below:
    On Tuesday, December 17, 2013 11:12:21 AM UTC-8, Andy Spiegl wrote:
    http://christian.hofstaedtler.name/blog/2008/11/puppet-managing-directories-recursively.html

    I thought I had understood recursive directory management. It worked
    fine until I switched to puppet v3 (Debian 3.3.2-1puppetla to be exact)
    Since then, files in subdirs aren't copied anymore.

    An example:
    File {
    owner => "nagios",
    group => "nagios",
    mode => '0644',
    }
    file { '/var/lib/nagios':
    ensure => directory,
    source => 'puppet:///modules/nagios/var_lib_nagios',
    recurse => true,
    }

    Manages /var/lib/nagios with recurse true.


       file { '/var/lib/nagios/plugins':
    ensure => directory,
    recurse => true,
    mode => '0775',
    }

    Completely takes precedence over File['/var/lib/nagios'] and manages
    '/var/lib/nagios/plugins' telling Puppet that all you care about is that
    it's a directory with mode 775. Notice that you no longer have a source for
    this subdirectory, so it's explicitly not managed.

    If you add source => 'puppet:///modules/nagios/var_lib_nagios/plugins' then
    I suspect you'll get what you want.


    file { '/var/lib/nagios/bin':
    ensure => directory,
    recurse => true,
    mode => '0775',
    }

    lama:~/.../puppet/modules/nagios> ls -la files/var_lib_nagios
    total 8
    drwxrwxr-x 2 andy users 4096 2013-11-15 15:56:23 bin/
    drwxrwxr-x 2 andy users 4096 2013-11-25 12:01:14 plugins/

    Why aren't these directories copied to /var/lib/nagios?
    I tried setting recurselimit to '2' but that didn't help either.

    Thanks for any hint!
    Andy.


    --
    A mathematician is a machine for converting coffee into theorems.
    (Alfred Renyi)
    --
    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+unsubscribe@googlegroups.com.
    To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/80da2632-5cc6-453f-96f6-c01d1e9b85a1%40googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.
  • Ben Ford at Dec 18, 2013 at 12:37 am


    file { '/var/lib/nagios/plugins':
    ensure => directory,
    recurse => true,
    mode => '0775',
    }
    I should also point out that this is unnecessary, as Puppet will
    automatically promote read permissions to read & execute permissions for
    directories. If you simply remove the second file declarations from your
    code, you'll have the behavior that I think you're expecting.

    http://docs.puppetlabs.com/references/latest/type.html#file-attribute-mode

    --
    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+unsubscribe@googlegroups.com.
    To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/f4d039a2-d13e-4a98-b9d2-80e9ebea0785%40googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.
  • Andy Spiegl at Dec 18, 2013 at 8:23 am

    On 2013-12-17, 16:31, Ben Ford wrote:

    If you override something in a recursive directory, you're
    overriding everything.
    I see, that makes sense.
    If you add source => 'puppet:///modules/nagios/var_lib_nagios/plugins' then
    I suspect you'll get what you want.
    You are right, that did it. Thanks!
    I should also point out that this is unnecessary, as Puppet will
    automatically promote read permissions to read & execute permissions
    for directories.
    No, not exactly as the mode definition is meant for the files in the
    subdirectory. There are executables in "bin" and "plugins".

    So, what would be a better way of changing the mode of some files
    within a directory resource with "recurse" activated? Adding "source"
    for all of them seems awkward...

    Thanks for your help!
      Andy.

    --
      Suburbia is where the developer bulldozes out the trees,
      then names the streets after them.
        (Bill Vaughan)

    --
    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+unsubscribe@googlegroups.com.
    To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/20131218082352.GA25905%40spiegl.de.
    For more options, visit https://groups.google.com/groups/opt_out.
  • Jcbollinger at Dec 18, 2013 at 3:27 pm

    On Wednesday, December 18, 2013 2:23:52 AM UTC-6, Andy Spiegl wrote:
    On 2013-12-17, 16:31, Ben Ford wrote:

    If you override something in a recursive directory, you're
    overriding everything.
    I see, that makes sense.
    If you add source => 'puppet:///modules/nagios/var_lib_nagios/plugins' then
    I suspect you'll get what you want.
    You are right, that did it. Thanks!
    I should also point out that this is unnecessary, as Puppet will
    automatically promote read permissions to read & execute permissions
    for directories.
    No, not exactly as the mode definition is meant for the files in the
    subdirectory. There are executables in "bin" and "plugins".

    So, what would be a better way of changing the mode of some files
    within a directory resource with "recurse" activated? Adding "source"
    for all of them seems awkward...
    Sorry, Puppet does not do the kind of resource property merging that you
    seem to want. As Ben wrote, when you have an explicit declaration of a
    File resource that otherwise would be managed via a recursive directory
    resource, the explicit declaration is the only one considered. Consider
    that the sources of the /var/lib/nagios/{plugins,bin} directories needn't
    actually appear on the masters as subdirectories of the source for
    /var/lib/nagios -- expressing the sources explicitly is not awkward, it's
    appropriate.

    There are a few things you could do to make this more palatable. For
    example, you can keep the needed manifest code DRY and clear by using a
    variable to specify the sources:

       $nagios_source = 'puppet:///modules/nagios/var_lib_nagios'
       file { '/var/lib/nagios':
             ensure => directory,
             source => ${nagios_source},
             recurse => true,
             mode => '0664',
       }
       file { '/var/lib/nagios/plugins':
             ensure => directory,
             source => "${nagios_source}/plugins",
             recurse => true,
             mode => '0775',
       }
       file { '/var/lib/nagios/bin':
             ensure => directory,
             source => "${nagios_source}/bin",
             recurse => true,
             mode => '0775',
       }


    Alternatively, packages are sometimes better than recursive File resources
    for managing directory trees.

    Or you could abandon managing file modes for the whole /var/lib/nagios tree
    via File resources, and do it instead via an Exec.


    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+unsubscribe@googlegroups.com.
    To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/96a5ef72-2784-42ef-890f-f1f52c12fe66%40googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.
  • Andy Spiegl at Dec 18, 2013 at 4:39 pm

    On 2013-12-18, 07:27, jcbollinger wrote:
    For example, you can keep the needed manifest code DRY and clear by
    using a variable to specify the sources:
    Good idea, thanks!
      Andy.


    --
      The foolish man seeks happiness in the distance,
      the wise grows it under his feet. -- James Oppenheim

    --
    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+unsubscribe@googlegroups.com.
    To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/20131218163912.GA4246%40spiegl.de.
    For more options, visit https://groups.google.com/groups/opt_out.
  • Stuart Cracraft at Dec 17, 2013 at 9:17 pm
    That is very, very disturbing.
    On Wednesday, December 11, 2013 2:25:04 PM UTC-8, Stuart Cracraft wrote:


    I want to recursively descend infinitely through a directory tree in
    regards to ensuring:

    (a) owner, group, permission
    (b) existence of the full path, all the leaves, out to the final leaf,
    e.g.
    /somedir/somesubdir/{file1,file2,file3,somesubdirtoo} and so forth

    This could be done trivially with an exec but is not
    pure-Puppet-ecosystem, obviously.

    So my questions are, from a Puppet-puritan-perspective:

    is there a way to do (a)
    is there a way to do (b)
    is there a way to do (a)+(b)

    and last:

    is there a way to do (a)+(b) in a reasonable period of time for a
    shallow tree of few leaves

    Yours in squirrelhood,

    Stuart

    --
    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+unsubscribe@googlegroups.com.
    To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/d24784e1-769c-4666-b077-a8856c898ff1%40googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.
  • Ygor at Dec 17, 2013 at 9:55 pm
    Have you tried experimenting ?<br />Much of my Puppet savvy is from tinkering. <br /><br />Try some code. See what works and what does not work. <br /><br />"Sometimes I think the surest sign that intelligent life exists elsewhere in the universe is that none of it has tried to contact us."<br />Bill Waterson (Calvin & Hobbes)

    --
    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+unsubscribe@googlegroups.com.
    To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/594141407.88154.1387317298820.JavaMail.root%40sz0126a.westchester.pa.mail.comcast.net.
    For more options, visit https://groups.google.com/groups/opt_out.
  • Stuart Cracraft at Dec 17, 2013 at 10:03 pm
    I don't have time to play hunt-the-wumpus.
    On Dec 17, 2013, at 1:54 PM, ygor@comcast.net wrote:

    Have you tried experimenting ?
    Much of my Puppet savvy is from tinkering.

    Try some code. See what works and what does not work.

    "Sometimes I think the surest sign that intelligent life exists elsewhere in the universe is that none of it has tried to contact us."
    Bill Waterson (Calvin & Hobbes)

    ----- Original Message -----
    From: smcracraft@gmail.com
    To: puppet-users@googlegroups.com
    Sent:Tue Dec 17 09:17:55 UTC 2013
    Subject: [Puppet Users] Re: recursive descent

    That is very, very disturbing.
    On Wednesday, December 11, 2013 2:25:04 PM UTC-8, Stuart Cracraft wrote:

    I want to recursively descend infinitely through a directory tree in regards to ensuring:

    (a) owner, group, permission
    (b) existence of the full path, all the leaves, out to the final leaf, e.g.
    /somedir/somesubdir/{file1,file2,file3,somesubdirtoo} and so forth

    This could be done trivially with an exec but is not pure-Puppet-ecosystem, obviously.

    So my questions are, from a Puppet-puritan-perspective:

    is there a way to do (a)
    is there a way to do (b)
    is there a way to do (a)+(b)

    and last:

    is there a way to do (a)+(b) in a reasonable period of time for a shallow tree of few leaves

    Yours in squirrelhood,

    Stuart
    --
    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+unsubscribe@googlegroups.com.
    To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/d24784e1-769c-4666-b077-a8856c898ff1%40googlegroups.com.
    For more options, visit https://groups.google.com/groups/opt_out.
    --
    You received this message because you are subscribed to a topic in the Google Groups "Puppet Users" group.
    To unsubscribe from this topic, visit https://groups.google.com/d/topic/puppet-users/Hf6ReeSy2mE/unsubscribe.
    To unsubscribe from this group and all its topics, send an email to puppet-users+unsubscribe@googlegroups.com.
    To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/594141407.88154.1387317298820.JavaMail.root%40sz0126a.westchester.pa.mail.comcast.net.
    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 puppet-users+unsubscribe@googlegroups.com.
    To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/5E36E5F6-7F2B-4E94-9767-E6E22B8D0156%40me.com.
    For more options, visit https://groups.google.com/groups/opt_out.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouppuppet-users @
categoriespuppet
postedDec 11, '13 at 10:25p
activeDec 18, '13 at 4:39p
posts14
users6
websitepuppetlabs.com

People

Translate

site design / logo © 2022 Grokbase