You appear to be trying to have some sort of "generic" template that fills in the values using two-phase variable interpretation.
As has pointed out, that probably won't work.

You should look at using extlookup instead of what are you trying here. That can do variable substitution in a manner similar to what you are trying to do. Combine that with the ability to call puppet functions from within a template, and I think you are a lot closer to what you need. Don't forget that templates have the full power of Ruby. You may need to use more code, and it will definitely be harder to read, but gives you more flexibility. May even what to write a custom function that does the additional manipulations that you need, and then use that in your templates.

Marc

On 12/6/11 7:27 AM, denmat wrote:
Hi,

I have doubts about what you are trying to do will even compile. I
suggest you take a look at the puppet docs on templating to get a
clearer picture:
  http://docs.puppetlabs.com/guides/templating.html

and after that you should take a look at variables:
  http://docs.puppetlabs.com/learning/variables.html

That should make some things a little clearer for you.

Cheers,
Den

On Tue, Dec 6, 2011 at 2:18 PM, Vitthal Gogate<vitthal.gog...@gmail.com>  wrote:
bit more explaination on what I am trying and appreciate if some one
can throw some light on how to get it working?

I define bunch of global variables in puppet Site.pp and try generate
the hadoop configuration file based on that using puppet template.  We
expect "value" in the config.erb template to be substituted by the
actual value of global_jobtracker_host.  This is two phase
substitution,  first value is substituted as "<%=
global_jobtracker_host %>:50030" then  "global_jobtracker_host" part
should be replaced by actual value "myhost.xxx.com".   Is it possible?

Site.pp
===============
global_jobtracker_host = myhost.xxx.com
global_namenode_host = myhost.xxx.com
conf_map = { 'mapred.job.tracker'                     =>  '<%=
global_jobtracker_host %>:9000',
                      'mapred.job.tracker.http.address' =>  '<%=
global_jobtracker_host %>:50030'
                    }

file {"$hadoop_conf_dir/mapred-site.xml":
       ensure =>  present,
       content =>  template ("/tmp/config.erb")
     }
================

/tmp/config.erb
================
<configuration>
<% conf_map.each do |key,value| -%>
      <property>
        <name><%= key %></name>
        <value><% value %></value>
      </property>
<% end -%>
</configuration>
==================

On Dec 5, 12:14 pm, Vitthal Gogate<vitthal.gog...@gmail.com>  wrote:
I have following erb template in my puppet module. The "value" itself
is template expression e.g.<%= some_puppet_global_variable %>.   I
expect this value to be substituted and evaluated to finally have the
value of "some_puppet_global_variable" substituted in the content.

Pl. let me know how to achieve it?

puppet template file:

<configuration>
<% conf_category_map.each do |key,value| -%>
       <config>
         <name><%= key %></name>
         <value><% value %></value>
       </config>
<% end -%>
</configuration>
--
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+unsubscr...@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+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to