gpt4 book ai didi

puppet - 当我在 puppet 中使用定义而不是类时,参数的最佳实践是什么?

转载 作者:行者123 更新时间:2023-12-02 07:18:42 24 4
gpt4 key购买 nike

我意识到,在模块中使用 modulename::params 类创建 params.pp 并在 modulename 类中继承该类以处理单独文件中的参数通常是一个好主意。如果我创建的是定义而不是类,我该怎么做?

为了澄清,我使用一个定义来能够在服务器上安装同一应用程序的多个版本。

最佳答案

好问题。由于 Puppet 中的定义类型没有可用的继承,因此无法以与类完全相同的方式为定义类型重现 params.pp 模式。不过还有另一种方法。

以下代码通过 Foo['bar'] 定义类型输出“hello world”:

class params {
$msg = 'hello world'
}
define foo($msg = $params::msg ) {
notify{ $msg: }
}

foo { 'bar': }
include params

现在,要使上述功能正常运行,必须包含 params。否则,Puppet 解析器会提示类参数尚未计算,因此无法解析 $params::msg 变量。

没有必要在参数的包含和 bar 的定义之间提供排序,因为在 Puppet 中,类总是在定义的类型之前评估。如果不是这样,上面的内容可能会导致相同的评估问题,您将不得不编写:

foo { 'bar':
require => Class['params'] # <- not necessary
}
include params

因此,要使其在模块 foo 中工作,您只需按照习惯添加一个 params 类,然后使用以下命令启动 init.pp:

include foo::params
define foo($x = $foo::params::x, $y = $foo::params::y, ...)

一个重要说明

在您愉快地继续使用 params.pp 模式之前,我建议您阅读这篇博文:the problem with params.pp

关于puppet - 当我在 puppet 中使用定义而不是类时,参数的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21784627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com