依赖于其他参数的默认参数
Default parameters that rely on other parameters
我为 chruby 编写了一个模块,Ruby 版本管理器。这适用于 Puppet v3,但我刚开始使用 Puppet v4,$version
参数没有插入到 $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"
}
在 class 主体中,但它也不进行插值。我已经使用 notice
检查了 $version
。我无法从文档中找到如何执行此操作:
- https://docs.puppetlabs.com/puppet/latest/reference/lang_conditional.html#unless-statements
- https://docs.puppetlabs.com/puppet/latest/reference/lang_classes.html#class-parameters-and-variables
我已经开始使用 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)
}
我为 chruby 编写了一个模块,Ruby 版本管理器。这适用于 Puppet v3,但我刚开始使用 Puppet v4,$version
参数没有插入到 $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"
}
在 class 主体中,但它也不进行插值。我已经使用 notice
检查了 $version
。我无法从文档中找到如何执行此操作:
- https://docs.puppetlabs.com/puppet/latest/reference/lang_conditional.html#unless-statements
- https://docs.puppetlabs.com/puppet/latest/reference/lang_classes.html#class-parameters-and-variables
我已经开始使用 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)
}