我创建了其他文件来划分主要人偶文件上的负载。我希望这些其他文件以某种格式返回字符串,因此创建了一个函数。在具有多个功能的多个文件中,我想从主文件中调用这些功能并获取结果。
util.pp
functions mymodule::retrieveData() >> String {
..
"${results}"
}
主文件:
include util.pp
$items = mymodule::retrieveData()
结构
manifest
- main.pp
- util.pp
问题:
include util.pp
似乎没有加载文件。错误:Could not find class ::util
retrieveData()
以将String结果存储在$items
中答案 0 :(得分:1)
您有多个问题,其中:
function
。retrieveData.pp
。因此,每个函数必须放在自己的文件中。manifests/
文件夹用于提供类和定义的类型(仅)定义的文件。 Per the documentation中提供Puppet语言功能定义的文件位于该目录的同级functions/
中。include
语句用于将类包含在正在构建的目录中 。它与源文件无关。如果您试图声明一个类,那么它将期望您提供所需类的名称,而不是文件名。无论如何,include
语句在访问函数中没有作用,并且您不应尝试将其与它们一起使用。总体上,在正确的名称空间中声明函数(显然已完成),相应地命名其文件,将文件放置在该名称空间中函数的正确位置,并在调用函数时通过其正确的名称和名称空间引用该函数
更新:
由于上述含义似乎有些不清楚,因此以下是具体示例:
mymodule / functions / retrieveData.pp :
function mymodule::retrieveData() >> String {
"some data"
}
mymodule / manifests / init.pp :
class mymodule {
$data = mymodule::retrieveData()
notify { "The data are: '${data}'": }
}