木偶应用自定义功能
puppet apply custom function
如何在具有 puppet apply
的任何节点上快速 运行 自定义函数?
假设我有这个文件 (test.pp)
file { "/root/files/f":
content => test('test'),
}
而这个 ruby 文件 (test.rb) 只记录和 return 第一个参数。
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
如何用 puppet apply test.pp
调用 ruby 函数 test
?
我的问题是 运行 我的整个 puppet agent -t
需要 5 分钟,我需要向 puppet 添加一个功能,所以我想快速测试它而不是每次都等待 5 分钟。
刚知道
您需要做的就是将 test.rb
文件直接添加到 /var/lib/puppet/lib/puppet/parser/functions/test.rb
中,puppet apply 将 "see" 函数。
这当然可以,但很难维护。
一种更易于维护的方法是将您的函数添加到一个模块,然后将该模块安装到您的主服务器上。
例如,使用您的模块名称创建一个新的(例如 test_function):
mkdir -p test_function/lib/puppet/parser/functions
您的 test_function
模块中应该有以下树
├── lib
│ └── puppet
│ ├── parser
│ │ └── functions
│ │ ├── test.rb
将您的 test.rb 代码添加到 test.rb 文件
将这个模块复制到你master的模块路径(这可能是/etc/puppet/modules
,具体取决于你的Puppet版本,使用puppet module list
查找)
之后,puppet master 将读取其模块列表并动态添加它找到的所有功能。
这里有更多关于它的文档:
如何在具有 puppet apply
的任何节点上快速 运行 自定义函数?
假设我有这个文件 (test.pp)
file { "/root/files/f":
content => test('test'),
}
而这个 ruby 文件 (test.rb) 只记录和 return 第一个参数。
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
如何用 puppet apply test.pp
调用 ruby 函数 test
?
我的问题是 运行 我的整个 puppet agent -t
需要 5 分钟,我需要向 puppet 添加一个功能,所以我想快速测试它而不是每次都等待 5 分钟。
刚知道
您需要做的就是将 test.rb
文件直接添加到 /var/lib/puppet/lib/puppet/parser/functions/test.rb
中,puppet apply 将 "see" 函数。
这当然可以,但很难维护。
一种更易于维护的方法是将您的函数添加到一个模块,然后将该模块安装到您的主服务器上。
例如,使用您的模块名称创建一个新的(例如 test_function):
mkdir -p test_function/lib/puppet/parser/functions
您的 test_function
模块中应该有以下树
├── lib
│ └── puppet
│ ├── parser
│ │ └── functions
│ │ ├── test.rb
将您的 test.rb 代码添加到 test.rb 文件
将这个模块复制到你master的模块路径(这可能是/etc/puppet/modules
,具体取决于你的Puppet版本,使用puppet module list
查找)
之后,puppet master 将读取其模块列表并动态添加它找到的所有功能。
这里有更多关于它的文档: