我为Ruby版本管理器chruby编写了一个模块。这适用于Puppet v3,但我刚开始使用Puppet v4而$version
param没有在$source_url
字符串中进行插值。
class chruby(
$version,
$source_url = "https://github.com/postmodern/chruby/archive/v${version}.tar.gz",
) {
我总是希望传递一个版本,并且我可能希望通过的源URL尽管不通过 - 更改了规则,不再允许这样做了,如何让它与v4一起使用?我试过这个:
unless $source_url {
$source_url = "https://github.com/postmodern/chruby/archive/v${version}.tar.gz"
}
在类体中但它也没有插值。我已使用$version
检查了notice
。我无法从文档中找到如何做到这一点:
我已经开始使用Hiera进行某些操作并理解可能删除了默认设置的需要,但我上周刚刚开始使用它,所以我还不清楚,但是仍然想了解为什么这已经从v3变为v4。
非常感谢任何帮助或见解。
答案 0 :(得分:2)
使用另一个变量:
class chruby(
$version,
$source_url = undef,
) {
$actual_source_url = $source_url ? {
undef => "https://github.com/postmodern/chruby/archive/v${version}.tar.gz",
default => $source_url,
}
notice($actual_source_url)
}