Vitthal Gogate
2011-Dec-05 20:14 UTC
[Puppet Users] Unusual puppet template usecase? not sure if it works - appreciate help!
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+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Vitthal Gogate
2011-Dec-06 03:18 UTC
[Puppet Users] Re: Unusual puppet template usecase? not sure if it works - appreciate help!
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+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
denmat
2011-Dec-06 12:27 UTC
Re: [Puppet Users] Re: Unusual puppet template usecase? not sure if it works - appreciate help!
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.gogate@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+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.
Marc Zampetti
2011-Dec-06 13:47 UTC
Re: [Puppet Users] Re: Unusual puppet template usecase? not sure if it works - appreciate help!
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.gogate@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+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
2011-Dec-06 13:52 UTC
[Puppet Users] Re: Unusual puppet template usecase? not sure if it works - appreciate help!
On Dec 5, 9:18 pm, Vitthal Gogate <vitthal.gog...@gmail.com> wrote:> [...] 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?No, templates do not work that way. You only get one pass. It sounds like you''re looking for a hash. Instead of making global_jobtracker_host an independent variable, make it a key to a global hash variable -- say jobtracker_hosts, for example -- then write your template something like this: <configuration> <% conf_map.each do |key,value| -%> <property> <name><%= key %></name> <value><%= jobtracker_hosts[value] %></value> </property> <% end -%> </configuration> John -- 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.