人偶 – 功能
人偶 – 功能
Puppet 像任何其他编程语言一样支持函数,因为 Puppet 的基本开发语言是 Ruby。它支持两种类型的函数,称为语句名称和右值函数。
-
语句独立存在,没有任何返回类型。它们用于执行独立任务,例如在新清单文件中导入其他 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语句时要记住的一件事是,它可以在一个类中多次使用,但有一个限制,即只包含一个类一次。如果包含的类接受一个参数,包含函数将使用 <class name>::<parameter name> 作为查找键自动查找它们的值。
包含函数不会导致类在声明时包含在类中,因此我们需要使用包含函数。它甚至不会在声明的类和围绕它的类中创建依赖项。
在 include 函数中,只允许使用类的全名,不允许使用相对名称。
定义函数
在 Puppet 中,定义的函数有助于确定给定类或资源类型的定义位置,并返回一个布尔值与否。还可以使用定义来确定是否定义了特定资源或定义的变量是否具有值。使用定义函数时要记住的关键点是,该函数至少接受一个字符串参数,可以是类名、类型名、资源引用或“$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'])