木偶 - 功能


Puppet 支持与任何其他编程语言一样的功能,因为 Puppet 的基本开发语言是 Ruby。它支持两种类型的函数,即语句名称和右值函数。

  • 语句独立存在,并且没有任何返回类型。它们用于执行独立任务,例如在新清单文件中导入其他 Puppet 模块。

  • Rvalue返回值,并且只能在语句需要值时使用,例如赋值或 case 语句。

Puppet 中函数执行的关键是,它仅在 Puppet master 上执行,而不在客户端或 Puppet Agent 上执行。因此,他们只能访问 Puppet Master 上可用的命令和数据。已经存在不同类型的功能,甚至用户也有权根据要求创建自定义功能。下面列出了一些内置函数。

文件功能

文件资源的文件功能是在Puppet中加载模块并以字符串的形式返回所需的输出。它查找的参数是 <模块名称>/<文件> 引用,这有助于从 Puppet 模块的文件目录加载模块。

像 script/tesingscript.sh 一样,将从 <模块名称>/script/files/testingscript.sh 加载文件。函数具有读取和接受绝对路径的能力,这有助于从磁盘上的任何位置加载文件。

包含功能

在 Puppet 中,include 函数与任何其他编程语言中的 include 函数非常相似。它用于声明一个或多个类,从而评估这些类中存在的所有资源,最后将它们添加到目录中。它的工作方式是,include 函数接受类名、类列表或逗号分隔的类名列表。

使用include语句时要记住的一件事是,它可以在一个类中多次使用,但有一个限制,即只能包含单个类一次。如果包含的类接受参数,则包含函数将使用 <class name>::<parameter name> 作为查找键自动查找它们的值。

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'])