On Tuesday, March 4, 2014 3:56:48 PM UTC-6, Virtual_user wrote:
>
>
> Hi 
> i am using puppet 2.7
>
> i want to echo  the Fqdn name in a template by using looping through the 
> hash, 
>
> Example, in site.pp i have
>
> $acc_sudo = $mc_servertype ? {
>         'system' => [ '%APP *<%= fqdn %>* =/etc/init.d/httpd start, 
> /etc/init.d/httpd stop,/etc/init.d/httpd restart, /sbin/services httpd 
> restart' ],
>         'db' => [ '%DB <%= fqdn %> =/etc/init.d/oracle start'],
>         'app' => ['%APP <%= fqdn %> =/etc/init.d/httpd start, 
> /etc/init.d/httpd stop,/etc/init.d/httpd restart, /sbin/services httpd 
> restart' ],
>
> }
>
>

There is no hash there.  You are using a Puppet language feature called a 
"selector" to assign a value to variable $acc_sudo based on the value of 
variable $mc_servertype.  (Which value, by the way, is in each case an 
array containing exactly one string.  Weird.)

 

>
>
> and sudo.erb file i have 
>
> <% if mc_servertype == "system" %>
>
> <% acc_sudo.each do |sudo| %><%= sudo %><% end %>
>
> <% end %>
>
> problem is, when its generating the sudo file, its  writing like this 
>
> %APP    *<%= fqdn %>*=/etc/init.d/httpd start, /etc/init.d/httpd 
> stop,/etc/init.d/httpd restart, /sbin/services httpd restart
>
>

Of course it does.  Each element of variable acc_sudo is a string.  Your 
template says to insert that string into the result, not to interpret it as 
another template.

 

>
> but i want to make it like this
>
> %APP    server1.test.co=/etc/init.d/httpd start, /etc/init.d/httpd 
> stop,/etc/init.d/httpd restart, /sbin/services httpd restart
>
>
> what will be the right syntax for it in site.pp ??
>
>

You are making it harder than it needs to be.  What you are after can be 
accomplished with ordinary variable interpolation:

$acc_sudo = $mc_servertype ? {
        'system' => [ "%APP ${fqdn} =/etc/init.d/httpd start, 
/etc/init.d/httpd stop,/etc/init.d/httpd restart, /sbin/services httpd 
restart" ],
        'db' => [ "%DB ${fqdn} =/etc/init.d/oracle start" ],
        'app' => [ "%APP ${fqdn} =/etc/init.d/httpd start, 
/etc/init.d/httpd stop,/etc/init.d/httpd restart, /sbin/services httpd 
restart" ],
}

Note there that (1) the variable interpolation is performed when the string 
is initialized, as opposed to when the template is processed, and (2) 
variables are interpolated into double-quoted strings only, not into 
single-quoted strings.


John

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to puppet-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/7cb1adc5-6e02-43ca-850e-c460fcf1ac11%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to