![Puppet 使用主机名作为变量值](https://linux22.com/image/610165/Puppet%20%E4%BD%BF%E7%94%A8%E4%B8%BB%E6%9C%BA%E5%90%8D%E4%BD%9C%E4%B8%BA%E5%8F%98%E9%87%8F%E5%80%BC.png)
我有这个简单的功能:
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 才能获得预期的行为。