function - 如何从与其定义的模块不同的模块调用木偶函数
问题描述
我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
从同一个模块中的类调用这个函数test_functions
并获取返回值。
但是,如果我从另一个模块调用这个函数,我会得到Evaluation Error: Unknown function: ...
test_two
|- manifests
|- test_external_function.pp
在课堂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
除非这些模块指定依赖关系,否则函数会自动加载并可供其他模块使用。一旦函数被编写并可用(在自动加载器可以找到它的模块中),您可以在将包含模块列为依赖项的任何 Puppet 清单中调用该函数,也可以从您的主清单中调用该函数。
解决方案
这是由于此处记录的 Puppet 编码中引入了一个相对较新的要求。具体来说:
请注意,如果一个模块在其 metadata.json 文件中有一个依赖项列表,它只会从那些特定的依赖项中加载自定义函数。
通常,通过 PDK 生成模块或puppet module generate
将创建一个占位符metadata.json
作为puppetlabs/stdlib
依赖项。这在实践中通常很好,但它会破坏从其他模块自动加载自定义函数。
在这种情况下(我猜您通常也会根据最佳实践说),您可能希望使用您正在调用的自定义函数指定其他模块作为metadata.json
模块的依赖项。例如,在 中test_two/metadata.json
,您可能有如下内容:
"dependencies": [
{ "name": "org_name/test_one", "version_requirement": ">= 1.0.0 < 2.0.0" },
]
在此处提供有关指定依赖项的完整文档。
推荐阅读
- vb.net - 索引超出数组范围?
- excel - 如何在 2 行中打破这个形状参考代码?
- python - 给定列表和整数时返回列表中的元素
- python - Broyden 在 Python 中的方法实现
- jquery - 在DIV结束后使固定元素滚动内容(滚动,不会在一瞬间消失)
- javascript - SQL 在数据库中插入空记录 - 使用 JavaScript
- xslt - XSLT 操作字符串,移动最后一个单词
- c++ - 访问冲突写入位置 0xCCCCCCCC 创建二维数组
- node.js - 需要验证我对开发依赖项和依赖项的理解
- php - 为什么 Chrome 会在我的 xlsx 文件末尾添加两个选项卡,这样做会损坏文件?