FAQ
I have an array:

$nodes = ['gfs01' ,'gfs02', 'gfs03', 'gfs04]

and a string variable:

$brick_store = "/var/bricks"

How can I append "/var/bricks" to each item in the array? Lack of a
looping construct makes this challenging in puppet.

Such that:

brick_array = ['gfs01:/var/bricks', 'gfs02:/var/bricks', ... ]

I also need to come up with a way to append a further sequence of
incrementing brick numbers to the items as well.

Doug

--
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.

Search Discussions

  • Trevor Vaughan at Aug 27, 2012 at 7:50 pm
    Try using regsubst:
    http://docs.puppetlabs.com/references/stable/function.html#regsubst

    On Mon, Aug 27, 2012 at 3:03 PM, Douglas Garstang
    wrote:
    I have an array:

    $nodes = ['gfs01' ,'gfs02', 'gfs03', 'gfs04]

    and a string variable:

    $brick_store = "/var/bricks"

    How can I append "/var/bricks" to each item in the array? Lack of a
    looping construct makes this challenging in puppet.

    Such that:

    brick_array = ['gfs01:/var/bricks', 'gfs02:/var/bricks', ... ]

    I also need to come up with a way to append a further sequence of
    incrementing brick numbers to the items as well.

    Doug

    --
    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.


    --
    Trevor Vaughan
    Vice President, Onyx Point, Inc
    (410) 541-6699
    tvaughan@onyxpoint.com

    -- This account not approved for unencrypted proprietary information --

    --
    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.
  • Douglas Garstang at Aug 27, 2012 at 8:06 pm
    Trevor,

    Thanks. I'm getting 'bad target Array' with:

    define glusterfs::volume_create ( $brick_store, $nodes, $replicas='1',
    $transport='tcp' ) {
    .....

    $n2 = regsubst ($nodes, '$', ":$brick_store") # Bad target array here.
    notice ("bricks = $n2")
    }

    On entering the define, $nodes = ['gfs01.us1.xxx.com',
    'gfs02.us1.xxx.com'] and $brick_store="/var/bricks"

    Doug.
    On Mon, Aug 27, 2012 at 12:44 PM, Trevor Vaughan wrote:
    Try using regsubst:
    http://docs.puppetlabs.com/references/stable/function.html#regsubst

    On Mon, Aug 27, 2012 at 3:03 PM, Douglas Garstang
    wrote:
    I have an array:

    $nodes = ['gfs01' ,'gfs02', 'gfs03', 'gfs04]

    and a string variable:

    $brick_store = "/var/bricks"

    How can I append "/var/bricks" to each item in the array? Lack of a
    looping construct makes this challenging in puppet.

    Such that:

    brick_array = ['gfs01:/var/bricks', 'gfs02:/var/bricks', ... ]

    I also need to come up with a way to append a further sequence of
    incrementing brick numbers to the items as well.

    Doug

    --
    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.


    --
    Trevor Vaughan
    Vice President, Onyx Point, Inc
    (410) 541-6699
    tvaughan@onyxpoint.com

    -- This account not approved for unencrypted proprietary information --

    --
    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.


    --
    Regards,

    Douglas Garstang
    http://www.linkedin.com/in/garstang
    Email: doug.garstang@gmail.com
    Cell: +1-805-340-5627

    --
    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.
  • Ashley Penney at Aug 27, 2012 at 8:21 pm
    You could give inline_template() from stdlib a try instead. You could do:

    $nodes = ['gfs01' ,'gfs02', 'gfs03', 'gfs04]
    $brick_store = "/var/bricks"
    $new = inline_template('nodes.each {|n| etc etc etc')

    I'm not 100% sure it'll work in this case but I've done other similar
    evil things with inline_template.

    On Mon, Aug 27, 2012 at 4:06 PM, Douglas Garstang
    wrote:
    Trevor,

    Thanks. I'm getting 'bad target Array' with:

    define glusterfs::volume_create ( $brick_store, $nodes, $replicas='1',
    $transport='tcp' ) {
    .....

    $n2 = regsubst ($nodes, '$', ":$brick_store") # Bad target array here.
    notice ("bricks = $n2")
    }

    On entering the define, $nodes = ['gfs01.us1.xxx.com',
    'gfs02.us1.xxx.com'] and $brick_store="/var/bricks"

    Doug.
    On Mon, Aug 27, 2012 at 12:44 PM, Trevor Vaughan wrote:
    Try using regsubst:
    http://docs.puppetlabs.com/references/stable/function.html#regsubst

    On Mon, Aug 27, 2012 at 3:03 PM, Douglas Garstang
    wrote:
    I have an array:

    $nodes = ['gfs01' ,'gfs02', 'gfs03', 'gfs04]

    and a string variable:

    $brick_store = "/var/bricks"

    How can I append "/var/bricks" to each item in the array? Lack of a
    looping construct makes this challenging in puppet.

    Such that:

    brick_array = ['gfs01:/var/bricks', 'gfs02:/var/bricks', ... ]

    I also need to come up with a way to append a further sequence of
    incrementing brick numbers to the items as well.

    Doug

    --
    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.


    --
    Trevor Vaughan
    Vice President, Onyx Point, Inc
    (410) 541-6699
    tvaughan@onyxpoint.com

    -- This account not approved for unencrypted proprietary information --

    --
    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.


    --
    Regards,

    Douglas Garstang
    http://www.linkedin.com/in/garstang
    Email: doug.garstang@gmail.com
    Cell: +1-805-340-5627

    --
    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.
    --
    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.
  • Jcbollinger at Aug 27, 2012 at 9:03 pm

    On Monday, August 27, 2012 3:06:30 PM UTC-5, Douglas wrote:
    Trevor,

    Thanks. I'm getting 'bad target Array' with:

    define glusterfs::volume_create ( $brick_store, $nodes, $replicas='1',
    $transport='tcp' ) {
    .....

    $n2 = regsubst ($nodes, '$', ":$brick_store") # Bad target array here.
    notice ("bricks = $n2")
    }

    On entering the define, $nodes = ['gfs01.us1.xxx.com',
    'gfs02.us1.xxx.com'] and $brick_store="/var/bricks"

    I think I would have expected that to work as written, but perhaps Ruby
    objects to the pattern having only an anchor. What about this:

    $n2 = regsubst ($nodes, '^(.*)$', "\1:$brick_store")


    John

    --
    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/-/44ZecAxY-nYJ.
    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.
  • Krzysztof Wilczynski at Aug 28, 2012 at 10:24 am
    Hi,

    You could try this:

    matti@acrux ~ $ cat | puppet apply --noop
    notice bracket_expansion('gfs[01-10]:/var/bricks')
    notice: Scope(Class[main]): gfs01:/var/bricks gfs02:/var/bricks
    gfs03:/var/bricks gfs04:/var/bricks gfs05:/var/bricks gfs06:/var/bricks
    gfs07:/var/bricks gfs08:/var/bricks gfs09:/var/bricks gfs10:/var/bricks
    notice: Finished catalog run in 0.11 seconds

    Not quite a loop, but will do the trick (and handles zero-padding).

    https://github.com/kwilczynski/puppet-functions/blob/master/lib/puppet/parser/functions/bracket_expansion.rb

    I will look into adding array-walking mode to join, prefix and
    join_with_prefix.

    KW
    On Monday, 27 August 2012 20:03:57 UTC+1, Douglas wrote:

    I have an array:

    $nodes = ['gfs01' ,'gfs02', 'gfs03', 'gfs04]

    and a string variable:

    $brick_store = "/var/bricks"

    How can I append "/var/bricks" to each item in the array? Lack of a
    looping construct makes this challenging in puppet.

    Such that:

    brick_array = ['gfs01:/var/bricks', 'gfs02:/var/bricks', ... ]

    I also need to come up with a way to append a further sequence of
    incrementing brick numbers to the items as well.

    Doug
    --
    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/-/yNayGxbkAjgJ.
    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
postedAug 27, '12 at 7:04p
activeAug 28, '12 at 10:24a
posts6
users5
websitepuppetlabs.com

People

Translate

site design / logo © 2022 Grokbase