依赖于其他参数的默认参数

时间:2016-03-06 15:09:31

标签: puppet

我为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。

非常感谢任何帮助或见解。

1 个答案:

答案 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)
}