我有这个简单的功能:
define e::x($x = $title) {
file {$x:
path => "/tmp/${x}",
ensure => present,
}
}
我这样使用它:
e::x {"xxxx":}
但创建的文件是 /tmp/“hostname”,像 debian-vm 之类的。它从不使用正确的值。
我不明白哪里出了问题,有人知道吗?
谢谢。
编辑
因此,经过更多测试后,看起来 $x = $title 不起作用。如果我直接使用 $title,它就可以工作。
这很奇怪,因为我确信我已经在另一台服务器上使用过这种模式,没有任何问题。
这可能与我的 Puppet 版本有关。我在 Debian Squeeze 上运行 Puppet 的打包版本。可能存在错误。
答案1
Debian Squeeze 软件包 Puppet 2.6.2 - 该$title
变量不能作为参数的默认值。
根据示例后的注释这里,需要 2.6.5 才能获得预期的行为。