puppet epp条件总是评估为true

时间:2017-08-03 09:50:00

标签: puppet

我正在使用(开源)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']

1 个答案:

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

(未应用任何更改。)