Puppet - 函数



Puppet 支持函数,就像任何其他编程语言一样,因为 Puppet 的基础开发语言是 Ruby。它支持两种类型的函数,分别称为语句右值函数。

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

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

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

文件函数

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

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

Include 函数

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

使用include语句时需要注意的一点是,它可以在一个类中多次使用,但只能包含单个类一次。如果包含的类接受参数,include 函数将自动使用<类名>::<参数名>作为查找键来查找它们的值。

include 函数不会导致类在声明时包含在类中,为此我们需要使用包含函数。它甚至不会在已声明的类及其周围的类中创建依赖关系。

在 include 函数中,只允许使用类的全名,不允许使用相对名称。

Defined 函数

在 Puppet 中,defined 函数有助于确定给定类或资源类型是在哪里定义的,并返回布尔值。还可以使用 define 来确定特定资源是否已定义或已定义的变量是否有值。使用 defined 函数时需要注意的关键点是,此函数至少接受一个字符串参数,该参数可以是类名、类型名、资源引用或“$name”形式的变量引用。

Define 函数检查本机和已定义的函数类型,包括模块提供的类型。类型和类按其名称匹配。该函数通过使用资源引用来匹配资源声明。

Define 函数匹配

# 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']) 
广告
© . All rights reserved.