我正试图在puppet中移植一个Ruby脚本.据我所知,实现这一目标的唯一方法是在模块中创建自定义函数.如果有另一种方式,请随时告诉我.我尝试了我的第一个测试,如https://docs.puppetlabs.com/guides/custom_functions.html所示,我宣布了一个新模块:
/etc/puppet/modules/custom_module
Run Code Online (Sandbox Code Playgroud)
并编辑了一个/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
Run Code Online (Sandbox Code Playgroud)
然后我在这个清单中/etc/puppet/environments/desarrollo/manifests/des.pp使用了这个内容:
node "develserver" {
write_line_to_file('/tmp/some_file', "Hello world!")
}
Run Code Online (Sandbox Code Playgroud)
最后,当我运行puppet agent -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
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我在/etc/puppet/modules/tipo/lib/puppet/type/customtipo.rb中有一个木偶自定义类型,其内容是:
require 'logger'
Puppet::Type.newtype(:customtipo) do
newproperty(:parametro) do
log.info("ES UN PARAMETRO")
end
end
Run Code Online (Sandbox Code Playgroud)
我知道这是一个虚拟自定义类型,但我从这种事情开始,资源放在/etc/puppet/modules/tipo/manifests/init.pp中,其内容是:
class tipo {
customtipo {
"ejemplo":
parametro => "uno",
}
}
Run Code Online (Sandbox Code Playgroud)
案例是否是"参数",它没有像我期望的那样显示消息"ES UN PARAMETRO".是否有其他方法可以使用自定义类型实现此目的?谢谢!
我正在尝试在 rundeck 中运行一个运行“puppet agent -tod”的任务,但是由于 puppet 返回的退出代码为 2,这意味着它应用了一些更改,如https://docs.puppetlabs.com/references /3.4.2/man/agent.html在 --detailed- exitcodes部分,但 rundeck 与 0 不同的所有标记为失败。我可以以某种方式强制显示 0 退出代码而不是 2 吗?
谢谢你们!
我正在尝试使用 Ruby 删除给定 URI 的最后一段,
像这样:
http://example.com/foo/bar/baz/?lala=foo
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到这个:
"http://example.com/foo/bar/baz/"
Run Code Online (Sandbox Code Playgroud)
我已经搜索过,我得到的只是获取 URI 的最后一个段或主机部分。