Let's say I have a very simple template
template.erb:
<% if not has_variable?("foobar") then foobar = "undefined" end -%>
foobar: <%= foobar %>
class: <%= foobar.class %>

And a basic manifest:
template.pp:
$mytemp = template('template.erb')
notice($mytemp)

And then I apply the manifest, with an undefined foobar (no foobar fact):
$ puppet apply ~/template.pp
notice: Scope(Class[main]): foobar: undefined
class: String

notice: Finished catalog run in 0.01 seconds

Looking good. So now I apply the manifest, but with a defined value
for foobar (via the FACTER_FOOBAR environment variable):
$ FACTER_FOOBAR='foo' puppet apply ~/template.pp
notice: Scope(Class[main]): foobar:
class: NilClass

notice: Finished catalog run in 0.01 seconds

Er, what? How on earth did foobar go from a String to NilClass? I
can't fathom how this is expected, or correct...

The reason I was doing this sort of thing is to give a possibly
missing fact a default value. I ended up using a second variable, like
this:
<% foo = has_variable?("foobar") ? foobar.to_s : "false" -%>

-- 
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