Paul,

You're correct, I did indeed fall in to thinking that defines act similar to
functions.  I wanted to create a generic definition that basically did a
linux 'sed', but the only way I could do it with an array of files was by
using the $name array.  I was having issues with this as I had multiple
execs in the define, but i'd just called them exec { "$name...

So that was my issue.  I'm a bit blurred on when puppet iterates through an
array and when it concatanates the array. Does it only iterate through $name
on defines?

Thanks,

Matt

2008/10/14 Paul Lathrop <[EMAIL PROTECTED]>

>
> Matt,
>
> From the terminology you are using, you seem to have fallen into the
> trap of thinking of defines as functions which you call. I highly
> recommend you avoid this; it leads you to certain mistaken assumptions
> about how defines work.
>
> From your description I am having difficulty understanding what you
> are trying to accomplish. Can you provide some specific details? You
> are trying to perform a search/replace on multiple files in a single
> resource?
>
> With those questions answered I might be able to help.
>
> --Paul
>
> On Mon, Oct 13, 2008 at 5:17 AM, Matt <[EMAIL PROTECTED]> wrote:
> > Hi Pete,
> >
> > I tried that with $myfiles as an array, but as I said, that just executed
> > the sed command with all of the filenames concatanated.
> >
> > I've got a fix at the moment.  I've just prefixed multiple execs in the
> > define method with something unique.  Its working, but just feels like
> there
> > would be a better way to do this.
> >
> > My code at the moment is:
> >
> > define searchreplace ( $cwd, $stext, $rtext, $sstext, $rrtext, $ssstext,
> > $rrrtext ) {
> >         exec {"dns_$name":
> >                 cwd     => $cwd,
> >                 path    => ["/bin"],
> >                 command => "sed -i 's/$stext/$rtext/' ./${name}",
> >         }
> >         exec {"tag_$name":
> >                 cwd     => $cwd,
> >                 path    => ["/bin"],
> >                 command => "sed -i 's/$sstext/$rrtext/' ./${name}",
> >         }
> >         exec {"ray_$name":
> >                 cwd     => $cwd,
> >                 path    => ["/bin"],
> >                 command => "sed -i 's/$ssstext/$rrrtext/' ./${name}",
> >         }
> > }
> >
> > searchreplace {$bfprocesses :
> >                 cwd     => "/home",
> >                 stext   => "replacethis",
> >                 rtext   => $dns,
> >                 sstext  => "replacethis2",
> >                 rrtext  => $tag,
> >                 ssstext  => "replacethis3",
> >                 rrrtext  => $ray,
> >
> >         }
> > }
> >
> >
> > It works - just wondering if there was a simpler way.
> >
> > Cheers,
> >
> > Matt
> >
> > 2008/10/13 Peter Meier <[EMAIL PROTECTED]>
> >>
> >> Hi
> >>
> >> > But that executed the sed command with all of the files as input.
> >> >
> >> > I also tried with a general define searchreplace method but i'm only
> >> > able to
> >> > call it once in a class with the $name due to the $name method again.
> >> >
> >> > Is it possible to get puppet to iterate a definition other than using
> >> > the
> >> > $name method?
> >>
> >>
> >> use something else than $name as filename. because $name have to be
> >> unique.
> >>
> >> greets pete
> >>
> >>
> >
> >
> > >
> >
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to