- Puppet 教程
- Puppet - 首页
- Puppet 基础
- Puppet - 概述
- Puppet - 架构
- Puppet - 安装
- Puppet - 配置
- Puppet - 环境配置
- Puppet - Master
- Puppet - Agent 设置
- Puppet - SSL 证书设置
- 安装和配置 r10K
- Puppet - 验证设置
- Puppet - 编码风格
- Puppet - 清单文件
- Puppet - 模块
- Puppet - 文件服务器
- Puppet - Facter & 事实
- 高级 Puppet
- Puppet - 资源
- Puppet - 资源抽象层
- Puppet - 模板
- Puppet - 类
- Puppet - 函数
- Puppet - 自定义函数
- Puppet - 环境
- Puppet - 类型 & 提供程序
- Puppet - RESTful API
- Puppet - 实时项目
- Puppet 有用资源
- Puppet - 快速指南
- Puppet - 有用资源
- Puppet - 讨论
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'])