puppetのtemplateで奇妙な挙動を発見。
テンプレート中で

<% name ||= 'default_name' %>


などと、変数のデフォルト値を設定しようとすると、manifestでどう書いてもdefault_nameが代入されてしまう。
しかも、

<%=name%>
<% name ||= 'default_name' -%>
<%=name%>
class xxx{
$name = 'true_name'
file{
content => template('test.erb')
}
}


とすると、

true_name
default_name


なんて生成される。(erbを直接rubyから実行するとtrue_nameが2回生成される)
puppet wikiを参考に

<% name = 'aaa' unless has_variable?('name') 


とすると、なぜかnameがnilになってしまう。

なぜ???
とりあえず、

<%
if has_variable?('name')
name2 = name
else
name2 = 'default_name'
end
%>

とし、name2を使えば問題が回避できた。