[Puppet Users] Re: variables created with generate() function have a newline when used in a template

2012-12-14 Thread Sven vd
Thanks for your complete answer! I used the inline_template method which is 
good enough for me

On Friday, December 14, 2012 3:17:24 PM UTC+1, jcbollinger wrote:
>
>
>
> On Thursday, December 13, 2012 9:48:44 AM UTC-6, Sven vd wrote:
>>
>> This works when using the variable inside a template.
>>
>> But I want to use the variable in an Exec command. How to remove the 
>> newline here? .chomp does not seem to work here.
>>
>
>
> No, it wouldn't.  The 'chomp' is a method of Ruby's String class.  It 
> works in the embedded Ruby context in a template, but it is not part of the 
> Puppet DSL, so it does not work for ordinary variable interpolation.
>
> The underlying problem is that the generate() command you are using is 
> outputting a trailing newline that gets incorporated into the resulting 
> value.  That's not too surprising, as it is good form for programs (such as 
> whatever external command you are running) to terminate their output with a 
> newline.
>
> You have two main options:
>
>1. Modify the command in some way or filter its output to remove the 
>newline before it reaches Puppet
>2. Remove the newline inside Puppet
>
> I leave you to figure out (1) on your own.  You have multiple approaches 
> available for (2).  The easiest built into Puppet is to use a template, 
> probably via the inline_template() function:
>
>   $result_line = generate('my command')
>   $result = inline_template('<%= @result_line.chomp %>')
>
> That's a little ugly, though.  If you have or are willing to install 
> Puppetlabs' "stdlib" add-on module, then it provides a chomp() function in 
> Puppet.  With that, you could replace the second line above with:
>
>   $result = chomp($result_line)
>
> Note well that Puppet variables can only be assigned values once each.  
> That's why my examples use two variables ($result_line and $result).
>
>
> 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/-/bsVEopGUj2QJ.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.



[Puppet Users] Re: variables created with generate() function have a newline when used in a template

2012-12-14 Thread jcbollinger


On Thursday, December 13, 2012 9:48:44 AM UTC-6, Sven vd wrote:
>
> This works when using the variable inside a template.
>
> But I want to use the variable in an Exec command. How to remove the 
> newline here? .chomp does not seem to work here.
>


No, it wouldn't.  The 'chomp' is a method of Ruby's String class.  It works 
in the embedded Ruby context in a template, but it is not part of the 
Puppet DSL, so it does not work for ordinary variable interpolation.

The underlying problem is that the generate() command you are using is 
outputting a trailing newline that gets incorporated into the resulting 
value.  That's not too surprising, as it is good form for programs (such as 
whatever external command you are running) to terminate their output with a 
newline.

You have two main options:

   1. Modify the command in some way or filter its output to remove the 
   newline before it reaches Puppet
   2. Remove the newline inside Puppet

I leave you to figure out (1) on your own.  You have multiple approaches 
available for (2).  The easiest built into Puppet is to use a template, 
probably via the inline_template() function:

  $result_line = generate('my command')
  $result = inline_template('<%= @result_line.chomp %>')

That's a little ugly, though.  If you have or are willing to install 
Puppetlabs' "stdlib" add-on module, then it provides a chomp() function in 
Puppet.  With that, you could replace the second line above with:

  $result = chomp($result_line)

Note well that Puppet variables can only be assigned values once each.  
That's why my examples use two variables ($result_line and $result).


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/-/UGPbUpMwetIJ.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.



[Puppet Users] Re: variables created with generate() function have a newline when used in a template

2012-12-13 Thread Sven vd
This works when using the variable inside a template.

But I want to use the variable in an Exec command. How to remove the 
newline here? .chomp does not seem to work here.

THanks

On Sunday, December 26, 2010 1:43:26 PM UTC+1, bowlby wrote:
>
> Thanks, both of you! That solved it. 
>
> Merry Christmas (for what's left of it...) 
>
>
>
> On Dec 26, 12:54 pm, Daniel Pittman  wrote: 
> > On Sun, Dec 26, 2010 at 22:45, bowlby  wrote: 
> > > I have this in nodes.pp 
> > > $puppetmaster_fqdn = generate("/usr/bin/facter","fqdn") 
> > 
> > > and this in a template 
> > > http://<%= puppetmaster_fqdn %>:8080 
> > 
> > > When puppet runs, this is the result: 
> > >http://puppet.home 
> > > :8080 
> > 
> > > Anybody any clue to whats causing this? I've tried -%> 
> > 
> > I suspect that -%> only eats whitespace outside the bracket, not 
> > inside.  Anyhow, you can make this do the right thing using a tiny bit 
> > of ruby:  <%= puppetmaster_fqdn.chomp %> 
> > 
> > Regards, 
> > Daniel 
> > -- 
> > ✣ Daniel Pittman✉ dan...@rimspace.net☎ +61 401 
> 155 707 
> >   ♽ made with 100 percent post-consumer electrons

-- 
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/-/AECI05CiIRYJ.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.



[Puppet Users] Re: variables created with generate() function have a newline when used in a template

2010-12-26 Thread bowlby
Thanks, both of you! That solved it.

Merry Christmas (for what's left of it...)



On Dec 26, 12:54 pm, Daniel Pittman  wrote:
> On Sun, Dec 26, 2010 at 22:45, bowlby  wrote:
> > I have this in nodes.pp
> > $puppetmaster_fqdn = generate("/usr/bin/facter","fqdn")
>
> > and this in a template
> > http://<%= puppetmaster_fqdn %>:8080
>
> > When puppet runs, this is the result:
> >http://puppet.home
> > :8080
>
> > Anybody any clue to whats causing this? I've tried -%>
>
> I suspect that -%> only eats whitespace outside the bracket, not
> inside.  Anyhow, you can make this do the right thing using a tiny bit
> of ruby:  <%= puppetmaster_fqdn.chomp %>
>
> Regards,
>     Daniel
> --
> ✣ Daniel Pittman            ✉ dan...@rimspace.net            ☎ +61 401 155 707
>               ♽ made with 100 percent post-consumer electrons

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