我正在使用(开源)puppet 3.8.5和未来的解析器。
在epp文件中,我这样说:
<%= $telegraf_mysql %>
<%= $telegraf_mysql == true %>
<% if $telegraf_mysql == true { -%>
yes, my sql
<% } else { -%>
no
<% } -%>
如果我将$telegraf_mysql
设为false,我会看到
false
false
no
但如果我将$telegraf_mysql
设为true,我会看到
true
false
no
我希望看到的地方
true
true
yes, my sql
任何指针?我误解了语法吗? 3.8中的语法与未来的语法有所不同,但是我读过的文档没有反映出来吗?
因此在hiera中设置了值:
telegraf:
monitor_mysql: false
然后在puppet(.pp文件)中:
$telegraf = hiera('telegraf')
$telegraf_mysql = $telegraf['monitor_mysql']
答案 0 :(得分:0)
我无法重现这个:
# init.pp
class foo () {
file { '/tmp/foo':
ensure => file,
content => epp('foo/mytemplate.epp', {'telegraf_mysql' => false}),
}
file { '/tmp/bar':
ensure => file,
content => epp('foo/mytemplate.epp', {'telegraf_mysql' => true}),
}
}
include foo
和
# mytemplate.epp
<%= $telegraf_mysql %>
<%= $telegraf_mysql == true %>
<% if $telegraf_mysql == true { -%>
yes, my sql
<% } else { -%>
no
<% } -%>
然后
$ bundle exec puppet -V
3.8.5
$ bundle exec puppet apply manifests/init.pp --modulepath=/Users/alexharvey/git/modules/ --parser=future
...
$ cat /tmp/{foo,bar}
false
false
no
true
true
yes, my sql
然后
$ PUPPET_GEM_VERSION=5.0.1 bundle update
...
$ bundle exec puppet apply manifests/init.pp --modulepath=/Users/alexharvey/git/modules/
Notice: Compiled catalog for alexs-macbook-pro-2.local in environment production in 0.07 seconds
Notice: Applied catalog in 0.03 seconds
(未应用任何更改。)