依赖其他参数的默认参数

问题描述 投票:0回答:1

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

puppet
1个回答
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)
}
© www.soinside.com 2019 - 2024. All rights reserved.