📅  最后修改于: 2020-10-31 14:10:03             🧑  作者: Mango
由于Puppet的基本开发语言是Ruby,因此Puppet支持任何其他编程语言的功能。它支持两种类型的函数,这些函数以statement和rvalue函数的名称命名。
语句独立存在,没有任何返回类型。它们用于执行独立任务,例如在新清单文件中导入其他Puppet模块。
Rvalue返回值,并且只能在语句需要值(例如赋值或case语句)时使用。
在Puppet中执行函数背后的关键是,它仅在Puppet主服务器上执行,而不在客户端或Puppet代理上执行。因此,他们只能访问Puppet主服务器上可用的命令和数据。已经存在不同类型的功能,甚至用户也有权根据要求创建自定义功能。下面列出了一些内置函数。
文件资源的文件函数是在Puppet中加载模块,并以字符串形式返回所需的输出。它寻找的参数是<模块名称> / <文件>引用,它有助于从Puppet模块的文件目录中加载模块。
像script / tesingscript.sh一样,它将从<模块名称> /script/files/testingscript.sh加载文件。函数具有读取和接受绝对路径的功能,这有助于从磁盘上的任何位置加载文件。
在木偶,include函数是非常相似的包括其他编程语言的函数。它用于声明一个或多个类,从而评估这些类中存在的所有资源,最后将它们添加到目录中。它的工作方式是,include函数接受类名称,类列表或逗号分隔的类名称列表。
使用include语句时要记住的一件事是,它可以在一个类中多次使用,但仅限于只包含一个类一次的限制。如果包含的类接受参数,则include函数将使用
包含函数不会导致在声明类时将其包含在类中,因为我们需要使用一个包含函数。它甚至不会在声明的类及其周围的类中创建依赖项。
在include函数,仅允许使用类的全名,而不允许使用相对名。
在Puppet中,已定义的函数有助于确定在哪里定义了给定的类或资源类型,并且是否返回布尔值。还可以使用define来确定是定义了特定资源还是定义的变量具有值。使用定义的函数时要记住的关键是,该函数至少需要一个字符串参数,该参数可以是类名,类型名,资源引用或形式为“ $ name”的变量引用。
定义函数检查本机和定义的函数类型,包括模块提供的类型。类型和类由其名称匹配。该函数通过使用资源引用来匹配资源减速度。
# Matching resource types
defined("file")
defined("customtype")
# Matching defines and classes
defined("testing")
defined("testing::java")
# Matching variables
defined('$name')
# Matching declared resources
defined(File['/tmp/file'])