首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >傀儡epp条件总是求值为真

傀儡epp条件总是求值为真
EN

Stack Overflow用户
提问于 2017-08-03 17:50:00
回答 1查看 683关注 0票数 0

我正在使用(开源) puppet 3.8.5和未来的解析器。

在epp文件中,我这样说:

代码语言:javascript
复制
<%= $telegraf_mysql %>
<%= $telegraf_mysql == true %>
<% if $telegraf_mysql == true { -%>
yes, my sql
<% } else { -%>
no
<% } -%>

如果我将$telegraf_mysql设置为false,我会看到

代码语言:javascript
复制
false
false
no

但是如果我将$telegraf_mysql设置为true,我会看到

代码语言:javascript
复制
true
false
no

在我期望看到的地方

代码语言:javascript
复制
true
true
yes, my sql

有什么建议吗?我是不是误解了语法?在3.8和future中的语法是否与在4中不同,但我读到的文档并没有反映这一点?

更新

该值是在hiera中设置的,因此:

代码语言:javascript
复制
telegraf:
  monitor_mysql: false

然后在puppet (.pp文件)中这样:

代码语言:javascript
复制
$telegraf = hiera('telegraf')
$telegraf_mysql = $telegraf['monitor_mysql']
EN

回答 1

Stack Overflow用户

发布于 2017-08-03 18:32:52

我不能重现这个:

代码语言:javascript
复制
# 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

代码语言:javascript
复制
# mytemplate.epp
<%= $telegraf_mysql %>
<%= $telegraf_mysql == true %>
<% if $telegraf_mysql == true { -%>
yes, my sql
<% } else { -%>
no
<% } -%>

然后

代码语言:javascript
复制
$ 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

然后

代码语言:javascript
复制
$ 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

(未应用任何更改。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45480678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档