我为 Ruby 版本管理器 chruby 编写了一个模块。这对于 Puppet v3 来说效果很好,但我刚刚开始使用 Puppet v4 并且
$version
参数不会插入到 $source_url
字符串中。
class chruby(
$version,
$source_url = "https://github.com/postmodern/chruby/archive/v${version}.tar.gz",
) {
我总是希望通过一个版本,并且我可能希望通过一个源网址,尽管通常不会 - 规则是否已更改,不再允许这样做,我怎样才能让它与 v4 一起使用?我试过这个:
unless $source_url {
$source_url = "https://github.com/postmodern/chruby/archive/v${version}.tar.gz"
}
在类主体中,但它也不会插入。我已经使用
$version
检查了是否有 notice
。我无法从文档中找到如何执行此操作:
我已经开始使用 Hiera 来做一些事情并理解这一点 可能消除了对默认值的需要,但我上周才开始使用它,所以我还不清楚,但仍然想了解为什么会这样已从 v3 更改为 v4。
使用另一个变量:
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)
}