gpt4 book ai didi

function - 如何从与其定义的模块不同的模块调用 puppet 函数

转载 作者:行者123 更新时间:2023-12-01 14:14:35 25 4
gpt4 key购买 nike

我已经定义了一个 puppet 函数check_value在模块 test_one

test_one
|- functions
|- check_value.pp

和函数声明:
test_one::check_value(String $check) >> String {
...
}

我声明了一个类 test_functions在同一个模块中。
test_one
|- functions
|- check_value.pp
|- manifests
|- test_functions.pp

一切似乎都很完美,我可以调用这个函数 check_value来自类(class) test_functions在同一个模块中,并且可以获取返回值。

但是,如果我从另一个模块调用此函数,我会得到 Evaluation Error: Unknown function: ...
test_two
|- manifests
|- test_external_function.pp

在类(class) test_external_function ,我尝试了几种方式调用 check_value但没有运气:
1. $x = test_one::check_value("t")


2. include test_one
$x = check_value("t")


3. include test_one
$x = test_one::check_value("t")

所有的试验都失败了。是否可以从另一个模块调用和使用这些 puppet(非 ruby​​)函数?我似乎找不到办法。谷歌到目前为止没有任何帮助!

根据 puppet 文档,有可能:
Puppet Functions

Functions are autoloaded and made available to other modules unless those modules specify dependencies. Once a function is written and available (in a module where the autoloader can find it), you can call that function in any Puppet manifest that lists the containing module as a dependency, and also from your main manifest.

最佳答案

这是由于在 Puppet 编码中引入了一个相对较新的要求,记录在 here 中。 .具体来说:

Note that if a module has a list of dependencies in its metadata.json file, it loads custom functions only from those specific dependencies.



通常,通过 PDK 或 puppet module generate 生成模块将创建一个占位符 metadata.jsonpuppetlabs/stdlib作为依赖。这在实践中通常很好,但它会破坏从其他模块自动加载自定义函数。

在这种情况下(我猜您通常也会按照最佳实践说),您可能希望在您的 metadata.json 中指定具有您正在调用的自定义函数的其他模块作为依赖项。为模块。例如,在 test_two/metadata.json ,你可以有类似的东西:
"dependencies": [
{ "name": "org_name/test_one", "version_requirement": ">= 1.0.0 < 2.0.0" },
]

包含有关指定依赖关系的完整文档 here .

关于function - 如何从与其定义的模块不同的模块调用 puppet 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55301916/

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