Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 在puppet中添加自定义函数_Ruby_Function_File Io_Puppet - Fatal编程技术网

Ruby 在puppet中添加自定义函数

Ruby 在puppet中添加自定义函数,ruby,function,file-io,puppet,Ruby,Function,File Io,Puppet,我正在尝试在puppet中移植Ruby脚本。据我所知,实现这一点的唯一方法是在模块中创建自定义函数。如果还有别的办法,请随时告诉我。我尝试了如所示的第一个测试,在中声明了一个新模块: /etc/puppet/modules/custom_module 并使用以下代码编辑了名为/etc/puppet/modules/custom_module/lib/puppet/parser/functions/newfunction的新函数文件: module Puppet::Parser::Functio

我正在尝试在puppet中移植Ruby脚本。据我所知,实现这一点的唯一方法是在模块中创建自定义函数。如果还有别的办法,请随时告诉我。我尝试了如所示的第一个测试,在中声明了一个新模块:

/etc/puppet/modules/custom_module
并使用以下代码编辑了名为
/etc/puppet/modules/custom_module/lib/puppet/parser/functions/newfunction
的新函数文件:

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
然后我在清单
/etc/puppet/environments/desarrolo/manifests/des.pp
中使用了以下内容:

node "develserver" {
        write_line_to_file('/tmp/some_file', "Hello world!")
}
最后,当我运行
puppet代理-tod
时,它会显示以下错误:

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Unknown function write_line_to_file at /etc/puppet/environments/desarrollo/manifests/des.pp:5 on node develserver

我做错了什么?

直接的问题可能是函数文件名上缺少扩展名
.rb


请记住,在目录编译期间,Ruby代码是在主机上运行的。如果希望Puppet在代理端执行操作,则不能使用自定义函数。你必须写一个(通常是一个提供者)来完成这项工作。

你错过了第一部分。谢谢你,菲利克斯,我会努力的。我的目的是在代理上运行ruby脚本,这样您的解决方案将是对它们采取的最佳操作。