Puppet“定义无法转换为数字”问题定义+ require +变量

时间:2015-01-09 14:29:01

标签: puppet

我创建了define。 一切都很好,直到我在'require'

中使用我的define实例(define + parameters)

像:

define foo ( ... ) { ... }
...


foo { "this is title of my ${major_version}-${minor_version}" : 
...
}

------直到这一切都很精致------

当我在'require'clausule中使用这个foo [“这是我的$ {major_version}的标题 - $ {minor_version}”]时,我得到了:

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: The value 'this is title of my major-version-minor-version' **cannot be converted to Numeric**. on node 
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run

2 个答案:

答案 0 :(得分:2)

如果您有非大写的资源引用,即

,也会发生这种情况
require => package['ehs']

会导致

  

' SERVER上的错误400:评估错误:值' ehs'无法转换为数字。在节点上......

因此,对我而言,解决方法是将P' P'在这样的包中:

require => Package['ehs']

答案 1 :(得分:0)

OPS!它很简单(愚蠢的愚蠢!:

  1. 不要使用' - '作为变量之间的分隔符 - 它被解释为数字减号 喜欢:$http_port = 9999 - ${instance_number}
  2. 在'require'子句中使用“Foo”代替“foo” - 当你使用时:“Foo:Foo”(子类/定义)