Puppet 自定义函数

Puppet 允许我们创建自定义函数。自定义函数有助于提升和扩展 Puppet 模块和清单文件的容量。

我们知道,Puppet 提供了一个内置函数列表,但是如果你想对它的数据做一些修改编译目录时内置函数或与第三方服务交互,如果这些内置函数不足以满足您的要求,那么您可以为 Puppet 创建自定义函数。

创建后自定义函数,它将像内置函数一样工作,您可以调用它们,并且可以使用它来返回一些值。甚至 Puppet 也提供与其他用户共享这些功能。

Puppet 允许两个接口来编写自定义功能:

  • 木偶语言
  • Ruby 函数 API

放置自定义函数的路径

自定义函数包含.rb 文件,这些文件分布在模块之间。自定义函数位于 lib/puppet/parser/function 中。要从 .rb 文件加载函数,请使用以下路径:

$libdir/puppet/parser/functions
puppet/parser/functions sub-directories in your Ruby $LOAD_PATH

创建自定义函数

Puppet 在 puppet::parser::Functions 模块中提供了 newfunction 方法来定义新函数。在 newfunction 方法中使用任何函数名。

让我们构建一个函数,用于将字符串写入目录/tmp 中的文件:

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

如果已经定义了函数,可以在manifest文件中使用,如下图:

write_line_to_file('/tmp/hello.txt, "Hello World!")

这里,write_line_to_file 函数是一个语句函数的例子。该函数执行操作,不返回任何值。

为了提供 Puppet master 和 agent 之间的通信,Puppet 使用了 RESTful API。访问 RESTful API 的 URL 是:https://brcleprod001:8 ...