木偶应用自定义功能

时间:2015-12-08 15:20:05

标签: ruby puppet

如何使用puppet apply

在任何节点上快速运行自定义函数

假设我有这个文件(test.pp)

file { "/root/files/f":
   content => test('test'),
}

这个红宝石文件(test.rb)只记录并返回第一个文件。

require 'logger'
module Puppet::Parser::Functions
  newfunction(:test, :type => :rvalue
  ) do |args|

    log = Logger.new(STDOUT)
    log.level = Logger::INFO
    log.info(args[0])
    args[0]
  end
end

如何使用test调用ruby函数puppet apply test.pp

我的问题是花了5分钟来运行我的整个puppet agent -t并且我需要为puppet添加一个函数,所以我想快速测试它,而不是每次等待5分钟。

2 个答案:

答案 0 :(得分:1)

这肯定有用,但很难维护。

更易于维护的方法是将您的功能添加到模块,然后在主设备上安装该模块。

例如,使用模块名称创建一个new(例如test_function):

mkdir -p test_function/lib/puppet/parser/functions

您的test_function模块

中应该有以下树
├── lib
│   └── puppet
│       ├── parser
│       │   └── functions
│       │       ├── test.rb

将test.rb代码添加到test.rb文件

将此模块复制到主人的模块路径(这可能是/etc/puppet/modules,具体取决于您的Puppet版本,请使用puppet module list查找)

之后,木偶大师将读取其模块列表并动态添加它找到的所有函数。

此处有关于此的更多文档:

https://docs.puppetlabs.com/guides/plugins_in_modules.html

https://docs.puppetlabs.com/guides/custom_functions.html

答案 1 :(得分:0)

我刚刚发现。

您需要做的就是将test.rb文件直接添加到/var/lib/puppet/lib/puppet/parser/functions/test.rb,并且傀儡申请将"请参阅"功能。