- 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 模块和清单文件的强大功能。
编写自定义函数
在编写函数之前,需要牢记以下几点。
在 Puppet 中,函数由编译器执行,这意味着所有函数都在 Puppet master 上运行,并且它们不需要处理任何 Puppet 客户端。函数只能与代理交互,前提是信息以事实的形式提供。
Puppet master 会捕获自定义函数,这意味着如果对 Puppet 函数进行了一些更改,则需要重新启动 Puppet master。
函数将在服务器上执行,这意味着函数需要的任何文件都应该存在于服务器上,并且如果函数需要直接访问客户端机器,则无法执行任何操作。
总共有两种不同类型的函数可用,一种是返回值的 Rvalue 函数,另一种是不返回任何值的语句函数。
包含函数的文件名应与文件中的函数名相同。否则,它将不会自动加载。
放置自定义函数的位置
所有自定义函数都作为单独的.rb文件实现,并在模块之间分发。需要将自定义函数放在 lib/puppet/parser/function 中。可以从以下位置的.rb文件加载函数。
- $libdir/puppet/parser/functions
- Ruby $LOAD_PATH 中的 puppet/parser/functions 子目录
创建新函数
新函数是使用puppet::parser::Functions模块内的newfunction方法创建或定义的。需要将函数名称作为符号传递给newfunction方法,并将要运行的代码作为块传递。以下示例是一个函数,用于将字符串写入 /user 目录内的文件。
module Puppet::Parser::Functions
newfunction(:write_line_to_file) do |args|
filename = args[0]
str = args[1]
File.open(filename, 'a') {|fd| fd.puts str }
end
end
一旦用户声明了函数,就可以在清单文件中使用它,如下所示。
write_line_to_file('/user/vipin.txt, "Hello vipin!")
广告