Puppet支持任何其他编程语言的功能,因为Puppet的基本开发语言是Ruby.它支持两种类型的函数,其名称为语句和 rvalue 函数.
语句独立存在,并且没有任何返回类型.它们用于执行独立任务,例如在新清单文件中导入其他Puppet模块.
Rvalue 返回值,只能是在语句需要值时使用,例如赋值或case语句.
在Puppet中执行函数的关键是,它只在Puppet master上执行,它们不在客户端或Puppet代理上执行.因此,他们只能访问Puppet master上可用的命令和数据.存在不同类型的功能,甚至用户也有权根据要求创建自定义功能.下面列出了几个内置函数.
文件函数
文件资源的文件功能是在Puppet中加载模块并返回所需的输出字符串的形式.它寻找的参数是< module name>/< file>引用,它有助于从Puppet模块的文件目录加载模块.
像script/tesingscript.sh一样,将从< module name>/script/files/testingscript.sh加载文件.函数具有读取和接受绝对路径的功能,这有助于从磁盘上的任何位置加载文件.
包含函数
在Puppet中,include函数与任何其他编程语言中的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'])